为什么语句 5 * 1.015 不返回 5.075
Why does the statement 5 * 1.015 not return 5.075?
可能的重复项:
JavaScript的数学坏了吗?
它返回
5.074999999999999
为什么?
还有哪些其他数字可以对此进行类似的证明?
浮
点运算的基本读物。
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
简而言之:
将无限多个实数压缩成有限位数 需要近似表示。虽然有无限 许多整数,在大多数程序中整数计算的结果可以 以 32 位存储。相反,给定任何固定位数的位, 大多数使用实数的计算将产生 不能用那么多位精确表示。因此, 浮点计算的结果通常必须按顺序四舍五入 以适合其有限表示。此舍入误差为 浮点计算的特征。
那么,经典的例子是:
0.1 + 0.2 = 0.30000000000000004
IEEE 754双精度浮点数(这是JavaScript使用的)非常非常好,但它们并不完美。它们提供了一种快速的方法,可以对浮点数进行大多数正确但不完美的计算。所有数字系统都有这样的折衷(例如,尝试用有限数量的十进制数字准确地表示1 / 3
或PI)。
这很正常 – 在处理浮点数时有一种叫做精度的东西。它存在于大多数现代语言中。请参阅此处:http://www.mredkj.com/javascript/nfbasic2.html 了解更多信息。
按照这种思路 – 如果不使用 EPS(epsilon 值),就无法比较浮点数。如果您需要更多信息,请随时再次与我联系。
相关文章:
- 我们可以在javascript中使用函数作为返回语句吗
- 如何在提示下获取和使用从window.onbeforeunload事件的返回语句显示的值
- 为什么模块级返回语句在 Node.js 中有效
- 不了解这种返回语句是如何工作的
- 返回语句后的函数声明全局变量不会被覆盖
- 检查浏览器支持时出现非法返回语句
- 非法返回语句错误
- 最佳实践:在 JavaScript 中返回语句
- 有条件地在返回语句中包含 json 字段
- Javascript 条件返回语句(Shorthand if-else 语句)
- 绑定函数的返回语句中参数的推理是什么
- 具有多个返回语句的函数返回什么
- 带有返回语句 JavaScript 的三元运算符
- 了解返回语句
- 无法调用返回语句的函数
- 为什么在 cosole 之前返回语句.log会影响 JavaScript 中的整个函数
- 未捕获的语法错误:非法返回语句
- 学习JS并困惑何时使用返回语句
- 在 for 循环中使用多个返回语句
- 如何在 Javascript 中提取包括返回语句在内的通用逻辑