了解c中的双重限制

时间:2017-03-14 09:08:53

标签: c double precision

我有一个"奇怪的"双重行为:

#include <stdio.h>
int main()
{
    double var = 4724.735;
    double var1 = 472473.5;
    printf("var: %19.11f var1: %19.11f\n", var, var1);
    var *= 100.0;
    printf("var * 100.0: %19.11f\n", var);
   return 0;
 }

结果是:

var:    4724.73500000000 var1:  472473.50000000000
var * 100.0:  472473.49999999994

为什么在* 100.0操作后我得到了结果而不是472473.50000000000?

数字较小,即var = 724.735,问题不存在。

你确定是重复的吗? Is floating point math broken?与javascript有关,这里问题在于第一个小数,只有当我使用4+数的整数部分时才会出现问题。 谢谢

0 个答案:

没有答案