我有一个"奇怪的"双重行为:
#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+数的整数部分时才会出现问题。 谢谢