在C中获得大约20-30位的精度

时间:2010-11-09 23:31:15

标签: c floating-point

所以,我正在尝试将某个值计算到相当大的精度。 C中的表达式是:

long double t = 2.0L+.2L*(sp)+s.missRate*50L;

我的结果是:11.575345

但“真正的”结果是:11.575345222971968

我正在使用长双打,这是最大的原始类型AFAIK。我不应该使用任何精度库来执行此操作。那么,哪种C型具有这种精度?

2 个答案:

答案 0 :(得分:4)

结果可能足够精确,但您在小数点后将其四舍五入到6位数。提高打印精度,如下所示:

long double var;
printf("%.20Lf\n", var); //20 digits after the radix

答案 1 :(得分:0)

double类型不支持超过大约16个十进制数字(http://en.wikipedia.org/wiki/IEEE_754)。所以不要指望你在标题中提到的附加4-14。

为了获得更多,我建议您转向gmplib.org