如下:
    double score = (double)0.1234;
    System.out.println("score * 10 = " + score);当score = 0.1234时,结果是:score * 10 = 1.234
当score = 0.12345时,结果是:scoer * 10 = 1.2345000000000002(问题就在这里)为什么在score = 0.12345时,会出现不精确的情况,请各位赐教,谢谢!

解决方案 »

  1.   

    《Effective Java》
    Item 31 如果要求精确答案,则尽量避免使用float和double
    解决办法是使用BigDecimal
      

  2.   

    ^_^,浮点数得到的基本上都是近似值,所以如果要求精确的答案,应该该避免使用float和double.应该使用BigDecimal.
      

  3.   

    感觉还是double比float精确,float几乎没一次是想要的结果,总会差个0.000000。x。。
      

  4.   

    先辈们
    为什么java书中说,缺省时是浮点数,但我在JBUiderX里面,我给float变量赋一个值为12.123它提示精度不够,要定义成DOUBLE型,但我把12.123改为123.123f就OK了是不是在JBUIDERX里面缺省是DOUBLE型
      

  5.   

    你在什么书里看的?没有f的话,默认为Double
      

  6.   

    谢谢大家的帮助,我已经使用bigdecimal的方法解决了这个问题,在本版以前的帖子中有相关的代码。
    结帖了。
      

  7.   

    java 文法中规定:浮点数莫认为:DOUBLE而形如:2.101f之类是float文法