main()
{
int d;
d=1.0/3*3;
printf("d=%d\n",d);
}
为什么输出d=1?
1.0/3不是应该等于0.333333333333333吗,然后乘以3应该等于0.999999999999999啊,为什么结果是1呢?
第1个回答 2018-09-25
%f默认保留六位小数,不足六位以0补齐,超过六位按四舍五入截断
第2个回答 2018-05-06
浮点数计算结果是近似结果追问
怎么个近似法能说说吗?
我刚才试了一下 d=0.9...(有14个9)输出(d=%d,d)结果d=0
如果d=0.9...(有十五个9)那么结果就是1了。
难道超过十五个9他就近似等于1? 十五个9以下以整数输出浮点数就把后面小数位数全舍去?
1.0/3!=0.333333...
不可能去表示无穷的数据,只能近似表示