这是我遇到的麻烦表情:
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.1时,用户需要看到“ 0.3”,而不是带有16位小数的数字。
我希望-并且我经常使用它-使Math.round(x / scale) * scale
返回一个正确舍入为lg(小数位)位数的数字。但这现在开始失败了。
要打败这个邪恶的咒语,需要什么魔术代码?
PS:例如,步长为0.1。可以是用户想要的任何东西。例如1、10、12、0.25或0.5。
答案 0 :(得分:1)
此数字需要放回
<input type="number">
中 元素
一种解决方案是
.toFixed(1)