JAVA浮点数的比较问题

    double d1 =42346134311111111111D;
	double d2 =d1+1;
	if(d1==d2){
				System.out.println("true");
	}else{
				System.out.println("false");
	}

输出:true;

因为:
1 浮点数存储时,按照符号,指数,位数进行存储。
2 先将10进制数,转换成对应的二进制小数。
3 然后将小数点移至尾数前为1的最左边,如上面例子:此时数太大时,小数点左移动大,科学计数法指数变大,尾数变多。
4 当尾数太大,超过float或者double尾数表示范围时,将要做截断操作。
5 一个超出表示范围的大数,再加一后。此时加一很有可能被截断。

具体浮点数在JAVA中如何存储参见:
https://blog.csdn.net/aduovip/article/details/47728921

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值