2012-04-19 57 views
6

我有這樣的:刪除小數點後兩位數字不是javascript中的整數?

i=4.568; 
document.write(i.toFixed(2)); 

輸出:

4.57 

但我不想轉過最後一個號碼7,我能做些什麼?

+0

當你用二進制浮點工作,這樣的事情可能發生。 – Pointy 2012-04-19 13:56:15

+0

@Pointy:No;他只是不想四捨五入。 – SLaks 2012-04-19 13:58:48

+0

是的,但我的觀點是,通常在處理浮點時,你不能保證你輸入的常量最終會達到你想象的結果,舍入或舍入,主要是因爲2和5是相對的總數: - ) – Pointy 2012-04-19 14:00:37

回答

9

改爲使用簡單的數學;

document.write(Math.floor(i * 100)/100); 

(jsFiddle)

您可以在自己的函數重用堅持下去;

function myToFixed(i, digits) { 
    var pow = Math.pow(10, digits); 

    return Math.floor(i * pow)/pow; 
} 

document.write(myToFixed(i, 2)); 

(jsFiddle)

+0

該函數什麼也沒有返回..! – 2012-04-19 14:26:25

+0

應該是:document.write(Math.floor(i * 100)/ 100); – 2012-04-19 14:30:45

0

稍微令人費解的做法:

var i=4.568, 
    iToString = ​i + ''; 
    i = parseFloat(iToString.match(/\d+\.\d{2}/)); 
console.log(i); 

這有效地採取了可變i,並將其轉換爲字符串,然後使用正則表達式小數點前的數字匹配和小數點後面的兩個數字,然後使用parseFloat()將其轉換回數字。

參考文獻:

5

就削減較長的字符串:

i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1') 
+0

感謝帖子SLaks – ranjenanil 2012-08-09 06:04:46

+0

toFixed是一個較短的解決方案,它的工作。 – Mayhem 2016-12-21 00:37:00

相關問題