首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript乘法算法

JavaScript乘法算法
EN

Stack Overflow用户
提问于 2014-02-21 16:59:26
回答 2查看 81关注 0票数 0

我在我的FireFox和Chrome控制台中都尝试了这个表达式:

代码语言:javascript
复制
17.99 * 100;

预期结果: 1799 实际结果: 1798.9999999999998

我也试过:

代码语言:javascript
复制
parseInt(17.99 * 100);

预期结果: 1799 实际结果: 1798

为什么会发生这种情况,以及如何获得预期的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-21 17:03:08

浮点算法不是一门精确的科学。原因是,在内存中,您的精度存储在二进制(所有的幂为2)。如果它不能用精确的2的幂表示,你可能会得到一些丢失的精度。

你的数字,1798.9999999999998已经失去了足够的精度,以至于它在乘法中没有加起来。

point

票数 1
EN

Stack Overflow用户

发布于 2014-02-21 17:05:55

试试这个:

代码语言:javascript
复制
Math.round(17.99*100)

正如前面的答案所解释的那样,将浮点数乘以并不是精确的科学;您可以做的是期望在一定的精度范围内得到结果。看看Number.prototype.toPrecision()。

代码语言:javascript
复制
(17.99*100).toPrecision(4)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21940511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档