我有這樣的:刪除小數點後兩位數字不是javascript中的整數?
i=4.568;
document.write(i.toFixed(2));
輸出:
4.57
但我不想轉過最後一個號碼7,我能做些什麼?
我有這樣的:刪除小數點後兩位數字不是javascript中的整數?
i=4.568;
document.write(i.toFixed(2));
輸出:
4.57
但我不想轉過最後一個號碼7,我能做些什麼?
改爲使用簡單的數學;
document.write(Math.floor(i * 100)/100);
您可以在自己的函數重用堅持下去;
function myToFixed(i, digits) {
var pow = Math.pow(10, digits);
return Math.floor(i * pow)/pow;
}
document.write(myToFixed(i, 2));
該函數什麼也沒有返回..! – 2012-04-19 14:26:25
應該是:document.write(Math.floor(i * 100)/ 100); – 2012-04-19 14:30:45
稍微令人費解的做法:
var i=4.568,
iToString = i + '';
i = parseFloat(iToString.match(/\d+\.\d{2}/));
console.log(i);
這有效地採取了可變i
,並將其轉換爲字符串,然後使用正則表達式小數點前的數字匹配和小數點後面的兩個數字,然後使用parseFloat()
將其轉換回數字。
參考文獻:
就削減較長的字符串:
i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1')
感謝帖子SLaks – ranjenanil 2012-08-09 06:04:46
toFixed是一個較短的解決方案,它的工作。 – Mayhem 2016-12-21 00:37:00
當你用二進制浮點工作,這樣的事情可能發生。 – Pointy 2012-04-19 13:56:15
@Pointy:No;他只是不想四捨五入。 – SLaks 2012-04-19 13:58:48
是的,但我的觀點是,通常在處理浮點時,你不能保證你輸入的常量最終會達到你想象的結果,舍入或舍入,主要是因爲2和5是相對的總數: - ) – Pointy 2012-04-19 14:00:37