2017-08-17 65 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>"); 
 
}

相關問題