safe-decimal

Safe and very efficient arithmetic operations on fixed decimal point numbers

https://github.com/fpco/safe-decimal#readme

LTS Haskell 22.14:0.2.1.0
Stackage Nightly 2024-03-28:0.2.1.0
Latest on Hackage:0.2.1.0

See all snapshots safe-decimal appears in

BSD-3-Clause licensed by Alexey Kuleshevich
Maintained by [email protected]
This version can be pinned in stack with:safe-decimal-0.2.1.0@sha256:cba4e9873698fa6ad6f59163f84d02063848ae05324e310679f108e7f0554c03,2017

Module documentation for 0.2.1.0

safe-decimal

Language Travis
GitHub top language Travis
Package Hackage Nightly LTS
safe-decimal Hackage Nightly Nightly

An implementation of a decimal point data type, that is backed by any custom integral type. It is safe, because things like integer overflows, underflows, division by zero etc. are checked for during the runtime and are prevented in pure code.

Changes

Changelog for safe-decimal

0.2.1

  • Add arithError
  • Add RoundHalfToZero and RoundHalfFromZero rounding strategies.
  • Conversion from Scientific normalizes the input and is more resilient to unbounded computation for bounded Decimal result.

0.2.0

  • Add Arith monad and corresponding functions.
  • Make rounding dependent on precision type (extra type argument to the Round type class)
  • Rename RoundFloor to RoundDown (with Floor as synonym)
  • Rename Truncate to RoundToZero (with Truncate as synonym)
  • Fix conversion fromRational to throw Underflow instead of rounding. Without this fix there was unexpected behavior on negative numbers.
  • Addition of scaleUp and scaleUpBounded
  • Addition of toFixedDecimal, fromFixedDecimal and fromFixedDecimalBounded
  • Many function renames, just to make sure they all follow the same convention.
  • Fix RoundHalfUp algorithm
  • Addition of RoundHalfDown and RoundHalfEven

0.1.0

Initial release