Decimal: Decimal numbers with variable precision

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

A decimal number has an integer mantissa and a negative exponent. The exponent can be interpreted as the number of decimal places in the value.


[Skip to Readme]

Properties

Versions 0.1.0, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.3.1, 0.4.1, 0.4.2, 0.5.1, 0.5.1, 0.5.2
Change log changelog.md
Dependencies base (>=4 && <5), deepseq [details]
License BSD-3-Clause
Copyright Paul Johnson, 2013, 2018.
Author Paul Johnson
Maintainer paul@cogito.org.uk
Category Math
Home page https://github.com/PaulJohnson/Haskell-Decimal
Uploaded by PaulJohnson at 2018-01-03T15:31:38Z

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for Decimal-0.5.1

[back to package description]

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