2017-08-17 90 views
1

我要生成1到10之间的随机数最多2位小数,生成到2个小数位2点的值之间的随机数在Javascript

我目前使用下面这个生成我的号码,

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

最后,我想知道如何产生同样的数字:

1.66

5.86

8.34

格式为:VAR randomnum = 那么代码

旁注:我不记得为什么我以前生成的我的号码一样,但请记住一些关于的Math.random生成数字到8位小数。

谢谢你的帮助! :)

ps:我见过很多关于等待下舍入或生成数字的帖子,还没有发现有人希望直接生成它们。

更新:我想一个数值不是看起来像一些

+1

号都有他们的精度;尝试将精度限制在小数点后两位是没有意义的。你可以做的是在1到1000之间生成*整数,然后将它们除以100,但由于二进制浮点的性质,你仍然会在值的小数部分产生一些“模糊”。 – Pointy

+0

[获取0.0200到0.120之间的随机数(浮点数)]的可能重复(https://stackoverflow.com/questions/17726753/get-a-random-number-between-0-0200-and-0-120 -float-numbers) – anu

+0

你可以使用parseFloat进行转换。什么是沼泽处理? – anu

回答

1

你非常接近一个字符串,你需要的是不与十进制数为分钟而努力最大。让我们最大= 1000分钟= 100,那么你Math.floor后,你将需要除以100:

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

或者,如果你想与小数的工作:在JavaScript

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

我得到这个与我的网站最好的工作,所以谢谢你,“关闭,但没有雪茄” –

+0

如果我想改变这个方程:是吗? var randomnum = Math.floor(Math.random()*(max-min)+ min)/ 100; –

+0

100是您的2位小数位精度。查看更新的帖子 – Observer

1

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>"); 
 
}