2011-05-26 46 views
0

我想驗證一個文本框四捨五入到小數點後兩位。但是,我做不是想要收起來。我想驗證一個文本框四捨五入,使用javascript

例如;如果我輸入19.999那麼結果將是19.99,而不是20.00

如果我輸入19.7,那麼結果將是19.70。如果我輸入19,那麼結果將是19.00

toFixed()函數在我的代碼中不起作用。

有人可以幫助我嗎?

回答

0
function withPrec(number, digitsAfterComma) { 
    if (digitsAfterComma <= 0 || digitsAfterComma > 10) return number; // bad args 
    var str = String(number); 
    var comma = str.indexOf('.'); 
    var zeroes = '0000000000'.substring(0, digitsAfterComma); 
    return (comma == -1) ? 
     str + '.' + zeroes : (str + zeroes).substring(0, comma + digitsAfterComma + 1); 
}  

使用子行動,以避免中間陣列。

用作withPrec(10.00001, 2)withPrec(1, 5);

+0

如果我將進入19.7則它給出19.7,但我想在這種情況下,19.70 – Sanjeev 2011-05-26 12:59:02

+0

啊確定 - 是的,沒有想到這一點! – 2011-05-26 13:18:05

+0

@Sanjeev,修復了你(它也沒有處理整數)。一旦它有多條線,最好爲它製作一個功能。 – tucuxi 2011-05-26 13:50:33

0

嘗試那樣工作,

parseInt(19.999 * 100)/100 

因爲如果你想獲得19.719.70使用後,

var num = parseInt(19.7 * 100).toString(); 
num = num.substring(0,num.length-2) +"."+ num.substring(num.length-2,num.length); 
+0

由於現在它的工作的罰款 – Sanjeev 2011-05-26 13:06:58

+0

@ Sanjeev- PL接受這個答案,如果它的工作對你.. – niksvp 2011-05-26 13:41:01

0
var string = "19.99999"; 
var newString = string.split(string.indexOf('.') + 2)[0];