加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java的“==”运算符双精度

发布时间:2020-12-14 05:27:06 所属栏目:Java 来源:网络整理
导读:此方法返回’true’.为什么 public static boolean f() { double val = Double.MAX_VALUE/10; double save = val; for (int i = 1; i 1000; i++) { val -= i; } return (val == save);} 解决方法 你从一个巨大的价值中减去相当小的一个值(小于1000).小值远小
此方法返回’true’.为什么
public static boolean f() {
   double val = Double.MAX_VALUE/10;
   double save = val;
   for (int i = 1; i < 1000; i++) {
       val -= i;
   }
   return (val == save);
}

解决方法

你从一个巨大的价值中减去相当小的一个值(小于1000).小值远小于理论结果最接近的可表示值仍然是原始值的大值.

基本上这是浮点数工作方式的结果.

想象一下,我们有一些十进制浮点类型(仅为了简单起见),它只在尾数中存储5个有效数字,并且范围为0到1000.

你的例子就像写10999 – 1000 …想想当四舍五入到5个有效数字时的结果.是的,确切的结果是99999 ….. 9000(999位数),但如果只能表示5位有效数字的值,最接近的结果是10999.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读