2014-03-19 74 views
8

Haskell有一个内置的Integer类型,它处理任意精度的整数。还有Rational,这是一个任意精度的分数。但是对这些事情的算术要求找到一个共同的分母,然后将结果取消为最小项。针对非整数的任意精度

如果我想要在尾数处做100位精度的浮点运算?我会怎么做?

我看到有一个Data.Fixed模块,但似乎提供了一些固定精度的自定义编写类型。根据每个任务需要多少准确度,我想要的是可以在运行时动态增加或降低精度的方法。

PS。我不在寻找十进制算术,尽管我想知道它是否可用于某处会很有趣......

+0

您可以随时使用Rational并不时使用['approxRational'](http://hackage.haskell.org/package/base-4.6.0.1/docs/Data-Ratio.html#v:approxRational)保持它的检查。 –

+0

理性的数字应该做你需要的一切,从不失去精确度,在一个自包含的库中。以可读的格式(即十进制扩展)读取/写出Rational的麻烦是什么? –

回答

4

numbers包中尝试Data.Number.CReal。它为您提供转换为字符串时所要求的精度。

+0

我对转换为字符串并不感兴趣,我对调整算术精度感兴趣,以进行性能/准确性折衷。 – MathematicalOrchid

+0

好吧,'CReal'不是很好的表现。但它可以根据需要动态调整精度。大概你最后是用你的数字来做点什么。 – augustss

+0

Mandelbrot发生器。所以我所做的只是计算需要满足一定的不平等所需的迭代次数。 – MathematicalOrchid