在JavaScript中生成2个值到2个小数位之间的随机数

问题描述 投票:8回答:4

我想生成一个1到10之间的随机数,最多2个小数位,

我目前正在下面使用它来生成我的电话号码,

var randomnum = Math.floor(Math.random() * (10.00 - 1.00 + 1.00)) + 1.00;

最终,我想知道如何生成数字:

1.66

5.86

8.34

格式:var randomnum = 然后输入代码

sidenote:我不记得为什么以前生成过这样的数字,但是记得关于Math.random生成数字到小数点后8位的内容。

谢谢您的帮助! :)

Ps:我已经看到很多关于等待舍入或向上舍入生成的数字的帖子,还没有找到想要直接生成它们的帖子。

更新:我想要一个数字值而不是看起来像数字的字符串

javascript random
4个回答
10
投票

您非常接近,您不需要使用最小和最大十进制数。让我们有max = 1000和min = 100,因此在Math.floor之后,您需要除以100:

var randomnum = Math.floor(Math.random() * (1000 - 100) + 100) / 100;

或者如果您想使用小数:

var precision = 100; // 2 decimals
var randomnum = Math.floor(Math.random() * (10 * precision - 1 * precision) + 1 * precision) / (1*precision);

6
投票

将原始随机数乘以10^decimalPlaces,将其取整,然后除以10^decimalPlaces。例如:

floor(8.885729840652472 * 100) / 100  // 8.88

function genRand(min, max, decimalPlaces) {  
    var rand = Math.random()*(max-min) + min;
    var power = Math.pow(10, decimalPlaces);
    return Math.floor(rand*power) / power;
}

for (var i=0; i<20; i++) {
  document.write(genRand(0, 10, 2) + "<br>");
}

根据评论进行编辑:对于包含性浮点随机函数(使用this answer):

function genRand(min, max, decimalPlaces) {  
    var rand = Math.random() < 0.5 ? ((1-Math.random()) * (max-min) + min) : (Math.random() * (max-min) + min);  // could be min or max or anything in between
    var power = Math.pow(10, decimalPlaces);
    return Math.floor(rand*power) / power;
}

2
投票

您可以使用下面的代码。

var randomnum = (Math.random() * (10.00 - 1.00 + 1.00) + 1.00).toFixed(2);

0
投票

使用typescript / angular示例的另一种方法:

getRandom(min: number, max: number) {
  return Math.random() * (max - min) + min;
}

console.log('inserting min and max values: ', this.getRandom(-10.0, -10.9).toPrecision(4));

获得-10.0和-10.9之间的随机值

© www.soinside.com 2019 - 2024. All rights reserved.