漂浮精度更高,有可能吗?

时间:2013-11-29 16:36:18

标签: c floating-point

如何打印(使用fprint)更高精度的浮点数(或其他格式)。例如sqrt(5)= 2.236067977543598 ....我想在点之后获得100个数字。有可能吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

如果您只想打印结果,而不是以任何其他方式使用它,那么一种方法是使用Spigot算法。

这里有详细记录:http://en.wikipedia.org/wiki/Spigot_algorithm

答案 1 :(得分:2)

是的,可以使用GMP库生成无限数量的小数位(或者您的操作系统可以使用的内存量)。 http://gmplib.org/此库的变体为http://www.mpfr.org/

要理解为什么只有有限数量的双精度浮点数,您需要了解浮点数在计算机中的表示方式。

http://www.ntu.edu.sg/home/ehchua/programming/java/DataRepresentation.html(滚动到4.0节)

答案 2 :(得分:1)

浮点格式使用32位来存储数字,精度有限。 (有关详细信息,请参阅http://en.wikipedia.org/wiki/IEEE_754-1985

如果此精度非常重要,您可以考虑任意精度。 (见http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic

答案 3 :(得分:0)

我认为固定精度浮点类型(CPU的浮点单元本身支持,即float,double)对于任何需要多位精度的计算都不是最佳的。

您可以使用Arbitrary-precision arithmetic