Javascript Math.random()的值比预期的高?

Javascript Math.random()的值比预期的高?,javascript,Javascript,我知道这个问题以前可能在其他地方得到过回答,但我找不到任何人有和我一样的问题。我试图生成一个后面有两个小数位的随机数,但有时它会输出一个高于最大值的值 ((Math.random() * 4) + 1.8).toFixed(2); 出于某种原因,它不是生成一个介于4和1.8之间的数字,而是有时会高于4,达到一个类似于5.25的值。我做错什么了吗?我觉得一切都很好,我不明白为什么它不起作用。如果有任何帮助,我们将不胜感激:)与4相乘将生成一个介于0和4之间的数字,添加1.8将生成一个介于1.8和

我知道这个问题以前可能在其他地方得到过回答,但我找不到任何人有和我一样的问题。我试图生成一个后面有两个小数位的随机数,但有时它会输出一个高于最大值的值

((Math.random() * 4) + 1.8).toFixed(2);

出于某种原因,它不是生成一个介于4和1.8之间的数字,而是有时会高于4,达到一个类似于5.25的值。我做错什么了吗?我觉得一切都很好,我不明白为什么它不起作用。如果有任何帮助,我们将不胜感激:)

4
相乘将生成一个介于
0
4
之间的数字,添加
1.8
将生成一个介于
1.8
5.8
之间的随机数。要生成介于
1.8
4
之间的随机数,需要乘以范围差

((Math.random() * (4 - 1.8)) + 1.8).toFixed(2);
//              --^^^^^^^^^^--
Math.random()
生成0到1之间的数字。假设它生成
0.9
。然后
(0.9*4)+1.8
就是
5.4
。问题是你要乘以4,然后在4的上面再加上更多。要解决此问题,可以使用

((Math.random() * (4 - 1.8)) + 1.8).toFixed(2)
然后,如果
Math.random()
产生
0.9
,结果将是
(0.9*2.2)+1.8
,即
3.78
,小于4。

((Math.random()*4)+1.8)。toFixed(2)

这部分在括号中,因此将首先计算:
(Math.random()*4)

这会给你一个介于0和4之间的数字

然后,将其加上1.8,这意味着您将得到一个介于1.8和5.8之间的结果,四舍五入到小数点后的2位数字


我希望这能回答您的问题,即为什么它不起作用,并且您现在可以导出您的解决方案。

非常感谢!对不起,如果我浪费了任何人的时间,或者这是一个与其他问题重复的问题,但我就是无法用我的一生来理解这一点。我真不敢相信它这么简单!