Высокая дакладнасць лікаў з якая плавае коскі ў Haskell?

Я ведаю, што Haskell мае ўласныя тыпы дадзеных, якія дазваляюць вам мець вельмі вялікія цэлыя лікі, так як рэчы

>> let x = 131242358045284502395482305
>> x
131242358045284502395482305

працаваць, як чакалася. Мне было цікава, калі там было падобнай «вялікая дакладнасць з якая плавае кропкай» натыўнай структурай я мог бы выкарыстаць, бо рэчы

>> let x = 5.0000000000000000000000001
>> x
5.0000000000000000000000001

можа быць. Калі я ўводжу гэта ў Haskell, ён абразае да 5, калі я выходжу за межы 15 знакаў пасля коскі (двайны дакладнасці).

23
Я мяркую Rational не добра для вашых мэтаў, гэта значыць вам трэба Плывучы асобніка?
дададзена аўтар leftaroundabout, крыніца
Я мяркую Rational не добра для вашых мэтаў, гэта значыць вам трэба Плывучы асобніка?
дададзена аўтар leftaroundabout, крыніца
Для максімальна магчымай дакладнасці: haskell.org/haskellwiki/Exact_real_arithmetic (рэалізацыя AERN не працавала на некаторы час, хоць ... Я не ведаю, ці ёсць іншыя кандыдаты прама цяпер)
дададзена аўтар luqui, крыніца
Для максімальна магчымай дакладнасці: haskell.org/haskellwiki/Exact_real_arithmetic (рэалізацыя AERN не працавала на некаторы час, хоць ... Я не ведаю, ці ёсць іншыя кандыдаты прама цяпер)
дададзена аўтар luqui, крыніца
Ну, заўсёды ёсць Rational у Data.Ratio для abitrary дакладных фракцый. Але, як правіла, адказ залежыць ад таго, якія аперацыі вам трэба яго падтрымаць.
дададзена аўтар Vitus, крыніца
Ну, заўсёды ёсць Rational у Data.Ratio для abitrary дакладных фракцый. Але, як правіла, адказ залежыць ад таго, якія аперацыі вам трэба яго падтрымаць.
дададзена аўтар Vitus, крыніца

6 адказы

У залежнасці ад таго, што вы шукаеце:

  • 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.
20
дададзена
Там таксама Data.Fixed ў база .
дададзена аўтар hammar, крыніца
Там таксама бібліятэка для кругавых лікаў , якія да гэтага часу дакладна, уключае ў сябе ўсе рацыянальныя і многім іншым, і маюць больш адрозныя прэдыкаты, чым вылічаецца рэале рабіць.
дададзена аўтар Daniel Wagner, крыніца

У залежнасці ад таго, што вы шукаеце:

  • 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.
20
дададзена
Там таксама Data.Fixed ў база .
дададзена аўтар hammar, крыніца
Там таксама бібліятэка для кругавых лікаў , якія да гэтага часу дакладна, уключае ў сябе ўсе рацыянальныя і многім іншым, і маюць больш адрозныя прэдыкаты, чым вылічаецца рэале рабіць.
дададзена аўтар Daniel Wagner, крыніца

Haskell не мае колькасці з якая плавае кропкай высокай дакладнасці naitively.

Для ўпакоўкі/модуля/бібліятэкі для гэтай мэты, спашлюся гэты адказ на іншую пасаду . Там жа прыведзены прыклад, які паказвае, як выкарыстоўваць гэты пакет, званы нумары .

9
дададзена
Таксама зьвярніце ўвагу на hmpfr пакет .
дададзена аўтар vinc17, крыніца
Я не ўпэўнены ў тым, дакладна адпавядае вашым патрабаванням, хоць гэты пакет. Проста праверыць яго. ;)
дададзена аўтар Mekeor Melire, крыніца

Haskell не мае колькасці з якая плавае кропкай высокай дакладнасці naitively.

Для ўпакоўкі/модуля/бібліятэкі для гэтай мэты, спашлюся гэты адказ на іншую пасаду . Там жа прыведзены прыклад, які паказвае, як выкарыстоўваць гэты пакет, званы нумары .

9
дададзена
Таксама зьвярніце ўвагу на hmpfr пакет .
дададзена аўтар vinc17, крыніца
Я не ўпэўнены ў тым, дакладна адпавядае вашым патрабаванням, хоць гэты пакет. Проста праверыць яго. ;)
дададзена аўтар Mekeor Melire, крыніца

Калі вам патрэбна высокая дакладнасць/хуткі/вылічэнні з якая плавае кропкай, то, магчыма, прыйдзецца выкарыстоўваць FFI і доўгія дублі, як родны тып Haskell яшчэ не рэалізаваная (гл https://ghc.haskell.org/trac/ghc/ticket/3353 ).

1
дададзена

Калі вам патрэбна высокая дакладнасць/хуткі/вылічэнні з якая плавае кропкай, то, магчыма, прыйдзецца выкарыстоўваць FFI і доўгія дублі, як родны тып Haskell яшчэ не рэалізаваная (гл https://ghc.haskell.org/trac/ghc/ticket/3353 ).

1
дададзена