double a = 47.4;int b = a * 1000;在个别机器上发现
b == 47399怎么回事?

解决方案 »

  1.   

    在delphi里,这样是不能通过编译,
    改成这样才行。 
     b:=round(a*1000);
      

  2.   

    你用的是C的语法,在Delphi中
    int b = a * 1000;
    这句话
    b:=a*1000;
    编译就会报错的,你不可能把一个double类型的数据赋值给一个整形数
      

  3.   

    你写的是什么程序啊!!C 还是 Delphi?
    不过
    无论 C 或是 Delphi 都会有浮点问题。一般来说,对于大部份的浮点数,在PC机中是不能精确地表示出来的。你可以看看 《Computer Systems A Programmer's Perspective》《深入理解计算机系统》,这本书说得十分清楚
      

  4.   

    哈哈
    这个回复好
    因为a=47.399啊
    -----------------------
    你定义的是double