有沒有辦法將數字舍入到小數點後2位i javascript。使用Javascript循環到最少2位小數和最多4位小數
實施例:
- 10 - > 10.00
- 20.10 - > 20.10
- 30.1234 - > 30.1234
- 40.123456 - > 40.1235
- 50.1200 - > 50.12
- 60.123 - > 60.123
等等......所以輪到分鐘2小數。我可以爲此使用jquery。
有沒有辦法將數字舍入到小數點後2位i javascript。使用Javascript循環到最少2位小數和最多4位小數
實施例:
等等......所以輪到分鐘2小數。我可以爲此使用jquery。
它聽起來喜歡你」重複說你想把數字轉換成至少有兩位小數的字符串(即使它們是零),如果需要的話最多四個(它們不是零)。如果是這樣的話:
對於所有的現代瀏覽器:See Marek's answer。
如果你不能依靠Intl
:我能想到的唯一的事情就是用toFixed(4)
然後取出最多兩個尾隨零:
function format(num) {
var str = num.toFixed(4);
return str.replace(/0{1,2}$/, '');
}
function test(test) {
var result = format(test.num);
console.log(
test.num,
"=>",
result,
result == test.result ? "- Pass" : "- Fail"
);
}
[
{num: 10, result: "10.00"},
{num: 20.10, result: "20.10"},
{num: 30.1234, result: "30.1234"},
{num: 40.123456, result: "40.1235"},
{num: 50.1200, result: "50.12"},
{num: 60.123, result: "60.123"}
].forEach(test);
如果你不受限於過時的瀏覽器,我建議這個智能功能:
var fmtr = new Intl.NumberFormat('us-us', {
style: 'decimal',
useGrouping: false,
minimumFractionDigits: 2,
maximumFractionDigits: 4
});
function test(test) {
var result = fmtr.format(test.num);
console.log(
test.num,
"=>",
result,
result == test.result ? "- Pass" : "- Fail"
);
}
[
{num: 10, result: "10.00"},
{num: 20.10, result: "20.10"},
{num: 30.1234, result: "30.1234"},
{num: 40.123456, result: "40.1235"},
{num: 50.1200, result: "50.12"},
{num: 60.123, result: "60.123"}
].forEach(test);
參考文獻:
對我來說,最好的答案在這裏! – Saram
Niiiiiiiiiiice。我知道402標準,但是,沒有意識到它做了這個*。太棒了。 –
@ T.J.Crowder很大的改進,謝謝! –
將40.123456'四捨五入爲40.1235的規則是什麼? ('10'到'10.00'甚至不是四捨五入的。) –
對不起,關鍵是舍入到小數點後2位(如果沒有小數,就像格式化數字)並且最大爲4位小數。 – Sensei
那麼是什麼決定'40.123456'變成'「40.1235」'而10'是'「10.00」'而不是'「10.000」'或'「10.0000」')? 「123.456」是「123.456」還是「123.46」或「123.4560」? (我使用引號是因爲我們*在說這裏的演示文稿,對嗎?不是數值?) –