2011-06-02 31 views
2

我必須將值從2.34567892.345任何人都可以在javascript中提出一個好的數學函數來整數整數?

.後,有必須是三數僅存應該被刪除

+0

此頁面列出了幾種不同的方法: http://www.mediacollege.com/internet/javascript/number/round.html – rsbarro 2011-06-02 07:17:42

+0

'Math.round(2。3456789 * 1000)/ 1000'?順便說一句,舍入2.3456789小數點後3位應該給你2.346,而不是2.345。 – 2011-06-02 07:21:58

回答

2

value.toFixed(3),但將四捨五入至2.346。

如果你真的不想輪,你可以只需parseInt(value * 1000)/1000

您可能需要確保值是一個數第一:

value = new Number(value) 

現在,如果value是用戶輸入,這是可能的,它現在可能是NaN(非數字)。

你不能做if(value == NaN)檢查,NaN永遠不等於任何東西(甚至不是自己),你必須使用isNaN(value)函數。

+0

感謝它完美的工作,我期望:) – user737767 2011-06-02 07:29:37

+0

OP不問NaN函數。你爲什麼要在這裏發佈? OP明確指出,該輸入是一個數字,即2.3456789 – 2011-06-02 07:30:08

+2

@roadrunner:因爲.toFixed()是Number對象上的函數。這就是爲什麼,防守編碼。 – 2011-06-02 07:38:38

1

嘗試Math.floor(2.3456789 * 1000)/100。這可能會導致浮點錯誤,所以它可能是一個更好的主意,只是通過字符串函數

var parts = String(2.3456789).split("."); 
var out = parts[0] + "." + parts[1].substring(0, 3); 

當然,第二種方法可以在數字嗆指數做到這一點。

+0

使用字符串以避免浮點錯誤肯定有優點。如果需要計算,可以堅持整數(例如,不是以釐米工作,以毫米爲單位)。 – 2011-06-02 07:36:37

3

使用Math.round()

這將舍入小數點後3位。

var result=Math.round(2.3456789*1000)/1000 //returns 2.345 

事實上,式舍入任何數x小數點是:

1)多個原數由10^x (10 to the power of x)
2)將Math.round()應用於結果。
3)將結果除以10^x

+0

我不明白你爲什麼要這樣做.toFixed()和Math.round(2.3456789 * 1000)/ 1000返回2.346,而不是2.345。 – 2011-06-02 07:28:14

+0

ya .toFixed()完美地工作:) – user737767 2011-06-02 07:30:29

3

的Javascript 1.5+介紹Number.toFixed(N)Number.toPrecision(N) - 挑一個取決於你所需要的東西。

Number.toFixed()可讓您指定小數點後的位數(如有必要,填充)。

(2.3456789).toFixed(3) = "2.346" 
(3).toFixed(3) = "3.000" 

Number.toPrecision()允許你指定的顯著數字位數。

(2.3456789).toPrecision(4) = "2.346" 
0

使用此功能數字的舍入

// Arguments: number to round, number of decimal places 

function roundNumber(rnum, rlength) { 

    var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); 

    retrurn parseFloat(newnumber); // Output the result to the form field (change for your purposes) 

} 
相關問題