首页 > 解决方案 > 如何使用 Math.round 获取舍入的 JavaScript 数字

问题描述

这是我遇到问题的表达方式:

Math.round((Math.ceil((0.4 - 0.1 / 1000) / 0.1) - 1)) * 0.1

在 Chrome 和 Firefox 中,它返回 0.30000000000000004。这个数字需要放回一个<input type="number">元素。虽然 Firefox 足够聪明,可以编写“0.3”,但 Chrome 向用户展示了 JavaScript 无法正确计算数学的全部美感。不用说,从用户的角度来看,这是不可接受的。

只有我找不到让它正常工作的方法。我知道 JavaScript 不擅长计算,但必须有一个解决方案。我几乎不在乎它有多复杂,但用户需要看到“0.3”,而不是步长为 0.1 时的 16 位小数。

我希望 - 我经常使用它 - forMath.round(x / scale) * scale返回一个正确四舍五入为 lg(scale) 数字的数字。但这现在已经开始失败了。

需要什么魔法密码才能打败这个邪恶的咒语?

PS: 0.1的步长是一个例子。它可以是用户想要的任何东西。比如 1、10、12、0.25 或 0.5。

标签: javascriptmath

解决方案


这个数字需要放回一个<input type="number"> 元素

一种解决方案是

.toFixed(1)

推荐阅读