簡體   English   中英

Javascript toFixed() 沒有尾隨零

[英]Javascript toFixed() no trailing zeros

我累了,這是數學。 應該相當簡單,我很有可能在打字時得到它。

我有一個 function,我們稱之為 roundNumber

function roundNumber(value){
    return value.toFixed(3);
}

但我想四舍五入到小數點后 3,除非后面的數字是 0。期望的結果:

roundNumber(1/3) //Should output 0.333
roundNumber(1/2) //Should output 0.5, NOT 0.500
roundNumber(1/8) //Should output 0.125
roundNumber(1/4) //Should output 0.25

最好的方法?

要執行您需要的操作,您可以將toFixed()的字符串結果轉換回數值。

下面的示例使用+一元運算符來執行此操作,但Number()parseFloat()也可以正常工作。

 function roundNumber(value) { return +value.toFixed(3); } console.log(roundNumber(1 / 3)) //Should output 0.333 console.log(roundNumber(1 / 2)) //Should output 0.5, NOT 0.500 console.log(roundNumber(1 / 8)) //Should output 0.125 console.log(roundNumber(1 / 4)) //Should output 0.25

首先:function 所做的不僅僅是四舍五入。 它將數字轉換為字符串(沿途進行一些舍入)。

如果你真的想要一個字符串,你最好的辦法可能是修剪掉沒有. 在他們面前:

return value.toFixed(3).replace(/([^.])0+$/, "$1");

現場示例:

 function roundNumber(value) { return value.toFixed(3).replace(/([^.])0+$/, "$1"); } console.log(roundNumber(1/3)); //Should output 0.333 console.log(roundNumber(1/2)); //Should output 0.5, NOT 0.500 console.log(roundNumber(1/8)); //Should output 0.125 console.log(roundNumber(1/4)); //Should output 0.25

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM