Javascript 为什么数学圆(1.53*20)/20=1.55?这实际上是如何工作的?

Javascript 为什么数学圆(1.53*20)/20=1.55?这实际上是如何工作的?,javascript,math,Javascript,Math,这更像是一个理论问题,但为什么这段代码要四舍五入到最接近的0.05 Math.round(1.53*20)/20 数学。四舍五入(1.53)等于2。数学四舍五入(1.53)/20等于0.1 Math.round(1.53*20)/20 神奇地1.55。有没有更符合数学的方法来理解这一点?Math.round()将返回最接近的整数值,如前所述 对于您的输入Math.round(1.53*20)/20它将首先计算1.53*20答案为30.6,然后您的表达式变为 Math.round(30.6)

这更像是一个理论问题,但为什么这段代码要四舍五入到最接近的0.05

Math.round(1.53*20)/20
数学。四舍五入(1.53)等于2。数学四舍五入(1.53)/20等于0.1

Math.round(1.53*20)/20 
神奇地1.55。有没有更符合数学的方法来理解这一点?

Math.round()将返回最接近的整数值,如前所述

对于您的输入
Math.round(1.53*20)/20
它将首先计算
1.53*20
答案为30.6,然后您的表达式变为

Math.round(30.6)/20
数学运算的结果之后,四舍五入(30.6)
是31(最接近的整数)
然后你的陈述变成了
31/20
,也就是
1.55

你的意思是
Math.round(1.53*20)/20
?这将给出结果
1.55
,但您给出的表达式不会给出结果。
Math.round(1.53/20)/20
为0。你从哪里得到1.55?你的代码返回(预期)
0
Math.round(1.53/20)/20给出
0
1.55
即使您的问题不清楚。。。javascript舍入问题的原因是因为javascript数字是二进制浮点表示,只能近似于许多小数。你可以找到一种更准确的方法来解决这个问题。