在控制台直接输入:
6999*0.7 // 4899.299999999999
找到一片关于这方面的文章:http://www.ruanyifeng.com/blo...
但是读了还是很不理解,涉及到的那两个标准看的我头晕。
有没有通俗一点的说法,来解释一下为什么?
在控制台直接输入:
6999*0.7 // 4899.299999999999
找到一片关于这方面的文章:http://www.ruanyifeng.com/blo...
但是读了还是很不理解,涉及到的那两个标准看的我头晕。
有没有通俗一点的说法,来解释一下为什么?
首先,计算机采用二进制处理数字,不能够精确表示浮点数。其次,javascript没有处理浮点数精度的方法,很多浮点数都是无限小数,在运算过程中,会被舍弃掉一部分,造成精度的丢失。所以就会产生你说的情况。
其实对于浮点数的四则运算,几乎所有的编程语言都会有类似精度误差的问题,只不过在 C++/C#/Java 这些语言中已经封装好了方法来避免精度的问题,而 JavaScript 是一门弱类型的语言,从设计思想上就没有对浮点数有个严格的数据类型,所以精度误差的问题就显得格外突出。
13 回答12.7k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答812 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
通俗点说就是有的小数用二进制无法直接精确表示