所以,我正在尝试将某个值计算到相当大的精度。 C中的表达式是:
long double t = 2.0L+.2L*(sp)+s.missRate*50L;
我的结果是:11.575345
但“真正的”结果是:11.575345222971968
我正在使用长双打,这是最大的原始类型AFAIK。我不应该使用任何精度库来执行此操作。那么,哪种C型具有这种精度?
答案 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