To focus the search input from anywhere on the page, press the 'S' key.
in-package search v0.1.0
Install
Authors
Maintainers
Sources
sha256=62cf9519603e45f6245dc04bcbf25568b4da707aea13089fee9a1d15741653b1
sha512=8247578f2dbedb1e6575e277ff8fc0dc2d49f39639b189e4e63059a1a4785a171cd349d5ade1c679cfda9b40ce1029f72d025c1377f722e485b811178bb1c4b1
README.md.html
decimal
Arbitrary-precision floating-point decimal type implemented in OCaml. Ported
from Pythondecimal
module.
It uses Zarith to do biginteger arithmetic.
Opam: https://opam.ocaml.org/packages/decimal/
License
This package is licensed under the
Python Software Foundation License v2,
for the sake of simplicity, as it is a derived work of the Python decimal
module.
Examples
$ opam install decimal # if trying out
# (* if trying out: *)
#require "decimal";;
# (* for convenience *)
module D = Decimal
let i = D.of_int
let s = D.of_string;;
# (* tell the REPL how to display decimals *)
#install_printer D.pp;;
#
D.(s "0.1" + s "0.2");;
- : D.t = 0.3
# (* default precision is 32 *)
D.(i 1 / i 3);;
- : D.t = 0.33333333333333333333333333333333
# (* round to decimal places: *)
D.(round ~n:2 (of_int 22 / of_int 7));;
- : D.t = 3.14
Dev
Build:
dune build
Try in REPL:
dune utop
Tests
The test runner source is in test/decimal_test.ml
. It parses and runs the test
cases in test/data/
. I am adding test case data files from the
Python snapshot
as I go.
Run current tests:
dune test
Note that, some of the tests don't make sense for the OCaml port and have thus
been deleted. If you ever need to update to new versions of the test files, you
can apply the changes as patches after re-dowloading the relevant *.decTest
files:
git show 07074859567e936b8d170aba5ef58889a4d9d467 | git apply
git show ae0196377fb7a99db7f198f2fb242e6a2fe4541e | git apply