保证你要猜错(一)

《保证你要猜错》是我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】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值