首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教这个为什么double是5而int却变成了4

2012-12-31 
【求助】请问这个为什么double是5而int却变成了4?这是涉及的的代码:double Vini1.6(25*Vini*1000/60/(Vini

【求助】请问这个为什么double是5而int却变成了4?

这是涉及的的代码:
double Vini=1.6;
(25*Vini*1000/60/(Vini*1000/60*5)) 的输出结果为5
而(int)(25*Vini*1000/60/(Vini*1000/60*5))的结果却为4
这个语句是我为了验证错误写的,所看起来这么罗嗦。不明白double转int的时候既然是“舍去”操作,那么为什么会把5舍去为4呢?
难道我原来的计算值不到5么?
另外:
Vini×1000/60=26.666666666666666666.....
是这个数据存储的原因么?
[解决办法]

引用:
这是涉及的的代码:
double Vini=1.6;
(25*Vini*1000/60/(Vini*1000/60*5)) 的输出结果为5
而(int)(25*Vini*1000/60/(Vini*1000/60*5))的结果却为4
这个语句是我为了验证错误写的,所看起来这么罗嗦。不明白double转int的时候既然是“舍去”操作,那么为什么会把5舍去为4呢?
难道我原来的计算值不到5么……


(25*Vini*1000/60/(Vini*1000/60*5))存储的其实是4.9999999999999991
(int)(25*Vini*1000/60/(Vini*1000/60*5))就变成了4
[解决办法]
取整前加一个0.5 然后取整,就不出现舍去.9999999...的情况了
强制转整型,直接去掉小数点后的部分了

每天回帖即可获得10分可用分

热点排行