C 浮动精度更高,有可能吗?

C 浮动精度更高,有可能吗?,c,floating-point,C,Floating Point,如何使用fprint高精度浮点或其他格式打印。例如,sqrt5=2.236067977543598。。。。我想在积分后得到100个数字。有可能吗 谢谢大家! 我认为固定精度浮点类型(CPU的浮点单元即float、double)本机支持的浮点类型对于任何需要多位数精度的计算都不是最佳的 如果您只想打印结果,而不是以任何其他方式使用它,那么可以使用,其中一种方法是使用spiget算法 这里有详细的说明:浮点格式使用32位存储数字,精度有限。 有关更多信息,请参阅 如果这个精度很重要,你可以考虑任意精

如何使用fprint高精度浮点或其他格式打印。例如,sqrt5=2.236067977543598。。。。我想在积分后得到100个数字。有可能吗


谢谢大家!

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


如果您只想打印结果,而不是以任何其他方式使用它,那么可以使用

,其中一种方法是使用spiget算法


这里有详细的说明:

浮点格式使用32位存储数字,精度有限。 有关更多信息,请参阅

如果这个精度很重要,你可以考虑任意精度。


请参见

是的,可以使用GMP库生成无限多的小数位数或操作系统允许您使用的内存。这个库有多种变体

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


滚动到第4.0节

不,这是不可能的,浮动没有那么高的精度。您需要另一个提供无限精度的解决方案。使用long或double long?您需要为大数字使用一个特殊的库,例如在OS X上,在accelerate框架中,它将是vecLib中的vBigNum.h,可处理多达300个有效数字。其他平台上也应该有类似的库。或者,您可以定义自己的大数类,并显式地处理精度。当然,你总是可以切换到一个可以这样做的程序,比如Mathematica。你可能会开发一个算法,在点后打印100位数字,但它们将毫无意义,因为float的有效二进制数字要少得多。您可能想看看高精度数学库,例如。@user305096:double和long-double都不能提供100位精度。当前本机浮点类型的最佳精度将在33到36位之间,四精度,128位类型。我需要发现这是可能的?我认为可以使用精度为350位的Qfloat,大约100位。@User305096您不能真正依靠黄金分割公式使用Fibonnacci计算sqrt5,因为您仍然会遇到精度问题。@User305096:-您可以使用第三方库,例如GNU MP