javascript - 乘数为 8.9 * 3 的 javascript 奇怪行为
问题描述
对于在 chrome、firefox 上测试的这种奇怪行为是否有任何解释,即。当你做 8.9 * 3 你得到 26.700000000000003
console.log(8.9 * 3);
有什么帮助吗?
解决方案
您已经发现了在计算机中进行实数数学运算的“乐趣”。
JavaScript 使用 64 位 IEEE-754 数字;这留下了 64 位来表示它知道的所有可能的实数。
它们被表示为我们所说的“浮点”数,这只是意味着计算机将特征(整数部分)和尾数(小数部分)存储在这些 64 位中。小数点左边的整数部分很容易处理。尾数有点棘手,它被存储,基本上是二进制的分数。
不幸的是,这样的二进制分数不能总是以 100% 的准确率表示十进制数量……您已经发现了一种这样的情况。
推荐阅读
- python - Python游戏中的功能没有破坏并且不会继续下一个功能
- html - 未找到用于解析的 HTML 响应中的表
- java - 使用 heroku war:deploy myapp.war 时如何在 Heroku 中编辑 Procfile
- javascript - 使用jQuery从jsp到servlet的级联参数
- java - 从 kafka 中检索指定主题中每个分区的最后偏移量
- python - 打印值时如何删除标题和索引
- c# - 如何防止构造函数在值更改时被调用
- javascript - 如何使用 JavaScript 在画布中单击一个圆圈
- wso2 - Ballerina 的整数模除法和整数除法余数
- android - Kotlin 合约在 Android 开发中的用例是什么