2012-09-25 80 views
-1

在JavaScript中,我可能會生成一個隨機數,可能是3,123或3,001或2790等。哪個JavaScript方法將幫助我返回一個目標整數,因爲這些值...如何檢測JavaScript整數是否接近另一個整數?

3,123或3,001或2790更接近3000,而不是4000或2000或1000.

感謝您的任何建議。

+1

你的問題是不明確的,你要得到一個數字,最接近給定的目標,朝着不同距離的接近千元目標還是別的? – Mahn

+0

是它的一個目標整數我正在拍攝。希望理解並給了我所尋找的解決方案。 – blackhawk

+0

我爲你解決了我的問題馬恩 – blackhawk

回答

2

嘗試:

var rand_num = Math.floor(Math.random() * 10000); 
Math.round((rand_num)/1000) * 1000; 

如果rand_num是3123,3001或2790,將分別減少到3.123兩種,3.001和2.729,四捨五入到3.0,再乘以成爲3000

+0

我調整了一下,但這讓我走上了成功的道路!非常感謝你希望! – blackhawk

+0

沒問題,祝你好運! –

+1

這是我用的.. \t var floor_score = Math.floor(game.score); var rounded_score = Math.round((floor_score)/ 10000)* 10000;再次感謝 – blackhawk

4

你可以對它們進行排序:

var numbers = [3123, 3001, 2790, 4000, 2000, 1000]; 
var target = 3000; 
var closest = numbers.sort(function(a, b) { 
    var a = Math.abs(a - target); 
    var b = Math.abs(b - target); 

    return a < b ? -1 : (a > b ? 1 : 0); 
}); 

closest包含3000通過距離來分類的數字。

或者你可以使用很長的一行:

var sorted = numbers.map(function(value, index) { 
    return [Math.abs(value - 3000), index]; 
}).sort().map(function(value, index) { 
    return numbers[value[1]]; 
}); 
+0

這是一個非常出色的答案。 –

+0

謝謝Blender – blackhawk

+0

你不能依靠默認的排序功能來排序數字。它根據字符串化的值進行排序。我不確定爲什麼第一個'.map'返回一個數組。這種排序將運行在看起來像「123,0」,「1,1」,「210,2」等的值上......' –

相關問題