High precision floating point numbers in Haskell?

前端 未结 3 2108
情深已故
情深已故 2020-12-16 10:57

I know Haskell has native data types which allow you to have really big integers so things like

>> let x = 131242358045284502395482305
>> x
1312         


        
相关标签:
3条回答
  • 2020-12-16 11:31

    Haskell does not have high-precision floating-point numbers naitively.

    For a package/module/library for this purpose, I'd refer to this answer to another post. There's also an example which shows how to use this package, called numbers.

    0 讨论(0)
  • 2020-12-16 11:32

    If you need a high precision /fast/ floating point calculations, you may need to use FFI and long doubles, as the native Haskell type is not implemented yet (see https://ghc.haskell.org/trac/ghc/ticket/3353).

    0 讨论(0)
  • 2020-12-16 11:55

    Depending on exactly what you are looking for:

    • Float and Double - pretty much what you know and "love" from Floats and Doubles in all other languages.
    • Rational which is a Ratio of Integers
    • FixedPoint - This package provides arbitrary sized fixed point values. For example, if you want a number that is represented by 64 integral bits and 64 fractional bits you can use FixedPoint6464. If you want a number that is 1024 integral bits and 8 fractional bits then use $(mkFixedPoint 1024 8) to generate type FixedPoint1024_8.
    • EDIT: And yes, I just learned about the numbers package mentioned above - very cool.
    0 讨论(0)
提交回复
热议问题