我知道这可能是在别的地方回答过的,但我找不到和我一样有问题的人。我试图在它后面生成一个有两位小数的随机数,但有时它会输出一个更高的值,然后是最大值。Math.random()比它应该高于?
((Math.random() * 4) + 1.8).toFixed(2);
出于某种原因,而不是将其产生4和1.8之间的数,它有时变为高于四到像5.25例如一个值。有什么我做错了吗?一切看起来都很好,我不明白为什么它不工作。任何帮助,将不胜感激:)
我知道这可能是在别的地方回答过的,但我找不到和我一样有问题的人。我试图在它后面生成一个有两位小数的随机数,但有时它会输出一个更高的值,然后是最大值。Math.random()比它应该高于?
((Math.random() * 4) + 1.8).toFixed(2);
出于某种原因,而不是将其产生4和1.8之间的数,它有时变为高于四到像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位数。
我希望这能回答你为什么不能正常工作的问题,并且你现在可以得到你的解决方案。
非常感谢!对不起,如果我浪费了任何人的时间,或者这是对另一件事的重复问题,但我无法想象出这一点为我的生活。我无法相信这是如此简单! –