关于js 0.1 + 0.2 != 0.3 的问题

╰半夏微凉° 2022-12-26 10:11 133阅读 0赞

问题:console.log(0.1 + 0.2 == 0.3) // false

最近又看了一下《javaScript高级程序设计》这本书,看到书里面这样一个问题。经过整理和个人理解在这里记录一下。

分析问题原因:

我们日常使用的数字是10进制的数,而计算机使用的是2进制的数字。不是所有的小数都能用2进制来准确的表达出来,把0.1 和 0.2 转化为2进制的话是一个无限循环的小数,计算机来处理这件事情的时候把最接近0.1和最接近0.2的小数加在一起然后返回出来,虽然无限接近0.1和0.2,但是他们相加依然不能准确的得到0.3。这样0.1 + 0.2 得到的结果是 0.30000000000000004 这样一个数字。
简单来说就是计算机在计算的时候把10进制数字转化为2进制然后再转化为10进制出现了误差。

如何避免:

1、计算小数的时候先乘以10的n次方,然后对结果在除以10的n次方。
2、精度要求不是特别高的时候也可以使用保留小数点后几位的方式来进行计算(toFixed())。

发表评论

表情:
评论列表 (有 0 条评论,133人围观)

还没有评论,来说两句吧...

相关阅读

    相关 chapter02 - 03

    1、  分别用cat \\tac\\nl三个命令查看文件/etc/ssh/sshd\_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? \[root

    相关 chapter02 - 03 作业

    chapter02 - 03 作业   1、分别用cat \\tac\\nl三个命令查看文件/etc/ssh/sshd\_config文件中的内容,并用自己的话总计出这三个

    相关 2021-02-03

    Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证

    相关 4.02.03

    /\fixed定位:相对于浏览器窗口\/ position: fixed; <html> <head> <meta charset="utf-8"> <tit

    相关 chapter02 - 03

    1、分别用cat \\tac\\nl三个命令查看文件/etc/ssh/sshd\_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? 答:cat /e