欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

保证你要猜错(一)

程序员文章站 2022-05-08 17:59:49
...

《保证你要猜错》是我07年在内部bbs发的几个语法题,大部分来自《java解惑》一书。欲激发内部的技术讨论氛围 ,现在整理转发。

想想输出结果是多少

 

public class Change{

public static void main(String args[]){

    System.out.println(2.00 - 1.10);

  }

}

 

   答案:

  这是正经的程序问题.

  1.1这个数字不能被精确表示成为一个double,因此它被表示成为最接近它的double值,大概是1.100000000000...1

  所以2.00-1.10=0.8999999999999999.


  问题就是在于并不是所有的小数都可以用二进制浮点数来精确表示。可以参考Double.valueOf(String)和 toString(double)方法的javadoc. 因此精确计算必须用BigDecimal。同理,在Javascript中也有类似误差。

  【2007-5-29 bbs】

 

相关标签: BBS JavaScript