一般的浮点数不能利用==比较,利用a>=123.4可以进行比较,在我的程序中可以正确比较,试试最简单的控制台程序!

解决方案 »

  1.   

    一般的浮点数不能利用==比较,用“a-b<0.00001”之类的来判别较好。
      

  2.   

    123.4是常量,默认是float型的,所比较会出问题,你用double(123.4)试一下
      

  3.   

    sdly(飞狐) double的123。4应该是123。40000000,而不是123。399999999
    不过都不=123。4
      

  4.   

    具體123.4是甚麼東西,和編譯器,cpu的浮點計算有關,反正肯定不相等.
    >=應該可以的.然後轉換成String就可以用==判斷了
      

  5.   

    这可能是二进制的天然缺陷导致的。
    用二进制表示的小数许多是无法精确表示的,当然4Byte表示的小数将比2Byte表示的更精确。
    实际上即使有十进制的计算机也会出现这种问题,举个例子:
    我们知道 1/3 + 1/3 + 1/3 = 1;
    1/3 = 0.3333333...  但实际上只能用有限个小数表示这个无穷循环小数,所以有限位表示的小数0.333333+0.333333+0.333333 != 1因此在数学计算中,当要比较两个非整数是否相等时是用lxp981818提到类似的办法实现的,但必须取绝对值,如下:
    fabs(a - b) < 0.000000001 (右值可随你对精度的要求而不同)
      

  6.   

    一般是取 (fabs(a-123.4) < 1e-8)