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

解决方案 »

  1.   

    Convert.ToSingle("1.3")Single是浮点数,所以计算并不是精确的
    1.3*10有可能等于 12.9999999999999x 或者13.0000000000000x 当然,这个结果是固定的,我只是想说浮点运算的结果不是精确的。(int)强制转换成int,这个是强制截位的转换,说白了就是直接保留整数部分,小数部分直接扔掉。总结一句,就是浮点数做运算得到的不是精确结果,只是近似结果。
      

  2.   

    谢谢你
    但是
    float f = Convert.ToSingle(str);
                f = f * 10;
                int j = (int)f;
    这样就可以得到1.3,请问为什么