为什么 nodejs 中的固定函数结果在浮点值略有不同之间有所不同?[复制]

Why toFixed function in nodejs result difers between slightly different value of floating point? [duplicate]

提问人:Gagantous 提问时间:10/6/2023 最后编辑:Gagantous 更新时间:10/6/2023 访问量:48

问:

我在使用固定时将小数四舍五入为逗号后面的两个数字时遇到了问题

我试过这个。

console.log(24.675.toFixed(2))
console.log(31.675.toFixed(2))

它返回(这是正确的)

24.68
31.68

我试着用

console.log(24.675.toFixed(2))
console.log(31.674.toFixed(2))

它返回(仍然正确):

24.68
32.67

但是当我尝试时

console.log(24.675.toFixed(2))
console.log(32.675.toFixed(2)) <- its 32 before comma instead 31 (first case)

它返回 (false):

24.68
32.67

为什么?我以为会回来,但它反而回来了32.67532.6832.67

我如何像这样制作一个正确的圆角浮点?

JavaScript 节点 .js 浮点固定

评论

0赞 Jaromanda X 10/6/2023
因为浮点数很奇怪......32.675*100 变成 3267.49999999999995 - 当您四舍五入为 3267 时,除以 100、32.67 ...我想这些步骤基本上就是发生的事情——结果似乎是一致的.toFixed
0赞 Gagantous 10/6/2023
@JaromandaX你知道如何像这样修复这个浮点吗?我不知道发生了什么。
1赞 Jaromanda X 10/6/2023
修复表明它已损坏,它在浮点工作方式的限制范围内工作(此结果不仅限于 JavaScript)
0赞 Manny Alvarado 10/6/2023
12年前辛辛苦苦学会固定不行。只需记录并查看 (0.105).toFixed(2) 的结果,您就会看到。只用Math.round,永远不要用toFixed!
0赞 Jaromanda X 10/6/2023
@MannyAlvarado将如何提供帮助??尝试一下Math.roundMath.round(32.675 * 100)/100

答: 暂无答案