鱼竿手把节断了怎么修:c语言 i 为long 我要计算i*0.075 的值 可为什么当我输入i=60000时 结果为4499 而不是4500

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/11 18:34:15
确实输出%f就没有问题,但是我是想搞清楚这个4499是如何得来得,内部机制是如何实现的,以避免今后犯错误,谢谢各位的回答.

0.075不是一个绝对精确的数,不象数学里的数,它是有精度的,它乘60000时结果自动转为实型,可能是4499.9999,但当你用%ld输出时把后面的去了,你定义实型就肯定正确
main()
{ long i=60000;
i=i*0.075; /*在这里右边是实型,左边是整型,去掉了*/
printf("%ld",i);
}
如果这样就对
main()
{ long i=60000;
printf("%f",i*0.075;);
}

我用long算出结果是4500。

精度不够 ,你用double 类型试一下

4499也是长整型啊

那不可能啊