日期:2014-05-18  浏览次数:20962 次

(int)((Convert.ToSingle("1.3")) * 10)不等于13?
int i = (int)((Convert.ToSingle("1.3")) * 10);
为什么i等于12

------解决方案--------------------
Convert.ToSingle("1.3")

Single是浮点数,所以计算并不是精确的
1.3*10有可能等于 12.9999999999999x 或者13.0000000000000x 当然,这个结果是固定的,我只是想说浮点运算的结果不是精确的。

(int)强制转换成int,这个是强制截位的转换,说白了就是直接保留整数部分,小数部分直接扔掉。

总结一句,就是浮点数做运算得到的不是精确结果,只是近似结果。