5分钟彻底搞懂”浮点数精度丢失“问题

5分钟彻底搞懂”浮点数精度丢失“问题写在最前 我们在平时的编程工作中 会经常接触到 浮点数精度丢失 问题

大家好,欢迎来到IT知识分享网。

从一个经典例子谈起:

js语言示例: var f1 = 0.1; var f2 = 0.2; console.log(f1+f2); // 您认为结果是0.3? 真实结果是 0.000004 java语言示例: public static void main(String[] args) {     double d1 = 0.1;     double d2 = 0.2;     System.out.println(d1+d2); //您认为结果是0.3? 真实结果是: 0.000004 }

上述两个算数的和,为什么不是0.3呢?就是因为“浮点数精度丢失”问题造成的

“浮点数精度丢失”问题产生的原因

根本原因:0.1这个十进制小数并不能很好的被二进制表示.

为什么0.1不能被二进制表示呢?

……..

聪明的你,应该已经发现了,这个算法过程是无限循环的,

因此可以得出结论:浮点数转二进制会有精度丢失问题

“浮点数精度丢失”问题的解决

具体解决方案,跟具体业务场景(上下文)有一定的关系。

(因为不同的解决方案,对应的成本不同,毕竟,这个世界上本就不存在“放之四海而皆准”的真理啊^_^)

解决方案:

比较两个浮点数是否相等,需要通过两者之差的绝对值是否小于某个阈值来判断。

场景2:金融/财务模块的金额或费用计算
解决方案:

5分钟彻底搞懂”浮点数精度丢失“问题

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/180283.html

(0)
上一篇 2025-06-08 09:33
下一篇 2025-06-08 10:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信