double八字节
int四字节
所以强制类型转换有问题不奇怪。

解决方案 »

  1.   

    浮点数在内部表示时一般只能逼近整数值,而不是等于
    所以浮点数取整时最好做一下4舍5入
    int b = (int) (2.3*100 + 0.5);
    就不会有任何问题
      

  2.   

    int b = (int)(a * 100 + 0.5);从double转换到int是去尾法,如果乘法结果是229.9999999999999999999
    b的结果仍然是229,这就是你遇到的问题
      

  3.   

    我已问过这个相同的问题,没有什么结果
    我认为对double型数取整,稳妥一些的方法是
    double a=100*(100.3-100);
    int b=int(a+1e-10);
      

  4.   

    补充一下,那个1e-10取决于a值的大小,如a小数点前有效数多,也许只能是1e-8等。
    4舍5入不行,比如:
    double a=2.999;取整后我们需要的是2,
    但int b = (int)(a * 100 + 0.5);变成了3。