在JavaScript中,保留兩位小數(shù)最常用的方法是toFixed(),它會將數(shù)字四舍五入并返回字符串。但需注意,toFixed()返回的是字符串,若需數(shù)字類型需用parseFloat()轉(zhuǎn)換。此外,浮點數(shù)計算可能存在精度問題(如0.1 + 0.2),此時可結(jié)合Math.round()或Number.EPSILON修正。
一、js中保留兩位小數(shù)
在 JavaScript 中,保留兩位小數(shù)可以通過以下幾種方法實現(xiàn),具體選擇取決于需求(如是否四舍五入、是否返回字符串或數(shù)字):
方法 1:toFixed()(四舍五入,返回字符串)
javascriptlet num = 3.14159;let result = num.toFixed(2); // "3.14"(字符串類型)console.log(result); // 輸出: "3.14"
注意:
toFixed() 會四舍五入,但返回的是字符串,如需數(shù)字需轉(zhuǎn)換:
javascriptlet numResult = parseFloat(num.toFixed(2)); // 3.14(數(shù)字類型)
方法 2:Math.round() + 乘除法(四舍五入,返回數(shù)字)
javascriptlet num = 3.14159;let result = Math.round(num * 100) / 100; // 3.14(數(shù)字類型)console.log(result); // 輸出: 3.14
二、js中保留兩位小數(shù)原理:
將數(shù)字放大 100 倍(num * 100)。
用 Math.round() 四舍五入。
再縮小 100 倍(/ 100)。
方法 3:Number.EPSILON 避免浮點誤差(精確計算)
javascriptlet num = 1.005;let result = Math.round((num + Number.EPSILON) * 100) / 100; // 1.01(修正浮點問題)console.log(result); // 輸出: 1.01
三、適用場景
解決 0.1 + 0.2 !== 0.3 類的浮點數(shù)精度問題。
方法 4:Intl.NumberFormat(本地化格式化)
javascriptlet num = 1234.567;let formatter = new Intl.NumberFormat('en-US', {minimumFractionDigits: 2,maximumFractionDigits: 2});let result = formatter.format(num); // "1,234.57"(字符串,含千分位)console.log(result); // 輸出: "1,234.57"
四、js中保留兩位小數(shù)特點
適合需要本地化格式(如千分位、貨幣符號)的場景。
方法 5:toLocaleString()(快速本地化)
javascriptlet num = 1234.567;let result = num.toLocaleString('en-US', { minimumFractionDigits: 2,maximumFractionDigits: 2}); // "1,234.57"(字符串)console.log(result);
推薦:
需數(shù)字類型 → 用 Math.round()。
需字符串顯示 → 用 toFixed() 或 Intl.NumberFormat。
避免浮點誤差 → 加 Number.EPSILON。
若需直接操作數(shù)字類型,可通過乘除法配合Math.round()實現(xiàn)。此方法精確且返回數(shù)字。對于國際化場景,可使用Intl.NumberFormat或toLocaleString()格式化輸出。根據(jù)需求選擇:基礎(chǔ)計算用Math.round(),顯示用toFixed(),復(fù)雜格式用本地化API。