# Decimal

Decimal numbers with variable precision https://github.com/PaulJohnson/Haskell-Decimal

 Version on this page: 0.5.1 LTS Haskell 13.4: 0.5.1 Stackage Nightly 2019-01-20: 0.5.1 Latest on Hackage: 0.5.1

See all snapshots Decimal appears in

BSD-3-Clause licensed by
Maintained by

• Data

# Haskell-Decimal

Fixed-precision decimal numbers, where the precision is carried with the numbers at run-time.

The Decimal type is mainly intended for doing financial arithmetic where the number of decimal places may not be known at compile time (e.g. for a program that handles both Yen and Dollars) and the application must not drop pennies on the floor. For instance if you have to divide \$10 between three people then one of them has to get \$3.34.

The number of decimal places in a value is represented as a Word8, allowing for up to 255 decimal places. Functions preserve precision. Addition and subtraction operators return a result with the precision of the most precise argument, so 2.3 + 5.678 = 7.978. Multiplication and division use whatever precision is necessary up to 255 decimal places.

## QuickCheck Specification

Data.Decimal includes a set of QuickCheck properties which act as both tests and a formal specification. To run the tests do:

cabal configure –enable-tests cabal build cabal test

or

stack test

## Version 0.2.1

• Fixed base dependency.

• Put test suite under cabal test

## Version 0.2.2

• Minor fixes to allow compilation under other versions of GHC.

## Version 0.2.3

• Added instance of NFData from Control.DeepSeq, and hence a dependency on the deepseq package, thanks to Jeff Shaw (shawjef3 at msu.edu).

## Version 0.3.1

• Added Typeable, Fractional and RealFrac instances.

• Multiplication now returns an exact result, increasing precision if necessary.

These changes alter the API. Hence the increment to the major version number.

Thanks to Alexey Uimanov (s9gf4ult at gmail.com).

## Version 0.4.1

• Improved Read instance. Now handles "1.2e3" and reads only returns a single parse.

• Corrected documentation.

• Added Enum instance.

• decimalConvert now returns a Maybe value. The old version has been renamed to “unsafeDecimalConvert.

## Version 0.5.1

• Bankers’ Rounding implemented in “roundTo”. This rounds values ending in “5” to the nearest even number, in line with the behaviour of “Prelude.round”. This is potentially a breaking change for software that depends on the old behavior, so the minor version number has been bumped.

• Added a stack.yaml file.

• Corrected documentation.

• Read instance now handles leading spaces properly.

• Fixed compiler warnings in test suite.

• Added roundTo' which allows for truncate, floor and ceiling behaviour when rounding.

Depends on 2 packages:
Used by 25 packages:
comments powered byDisqus