開發中有時我們需要對小數進行取整,或者只保留 N 位小數進行顯示。下面分別對這兩種情況進行說明。這里假設我們有如下數字進行處理:
var
num = 5/3;
console.log(num);
輸出如下:
一、取整
1,直接取整(丟棄小數部分)
1
|
var
num = parseInt(5/3);
// 1
|
2,四舍五入取整
1
|
var
num = Math.round(5/3);
// 2
|
3,向上取整
1
|
var
num = Math.ceil(5/3);
// 2
|
4,向下取整
1
|
var
num = Math.floor(5/3);
// 1
|
二、保留小數點后N位
1,使用 toFixed() 方法
(1)方法介紹
- toFixed() 方法可以將數字轉換為字符串,並指定小數點后保留幾位。如果小數實際位數不夠指定的位數,不足的部分會補 0。所有主要瀏覽器都支持 toFixed() 方法。
- toFixed() 使用的是銀行家舍入規則:四舍六入五取偶(又稱四舍六入五留雙)。
銀行家舍入法:
四舍六入五考慮,五后非零就進一,五后為零看奇偶,五前為偶應舍去,五前為奇要進一。
四舍六入五考慮,五后非零就進一,五后為零看奇偶,五前為偶應舍去,五前為奇要進一。
(2)使用樣例
1
2
3
4
|
var
num1 = (5/3).toFixed(2);
// 1.67
var
num2 = (4).toFixed(2);
// 4.00
var
num3 = (0.015).toFixed(2);
// 0.01
var
num4 = (0.025).toFixed(2);
// 0.03
|
2,自定義轉換方法
(1)如果嫌 toFixed 這種四舍六入五取偶規則太奇葩。可以考慮自己實現個四舍五入的方法,下面方法轉換后仍為數字類型。
- 第一個參數為待轉換的數字
- 第二個參數為保留的小數個數
1
2
3
4
|
//保留n位小數
function
roundFun(value, n) {
return
Math.round(value*Math.pow(10,n))/Math.pow(10,n);
}
|
(2)使用樣例
1
2
3
4
|
var
num1 = roundFun(5/3, 2);
// 1.67
var
num2 = roundFun(4, 2);
// 4
var
num3 = roundFun(0.015, 2);
// 0.02
var
num4 = roundFun(0.025, 2);
// 0.03
|
3,自定義格式化輸出方法
(1)下面方法同樣是指定小數位數進行四舍五入,不過返回的不再是數字而是格式化后的字符串,小數點后面不足的位數會自動補 0。比如數字為 4,會在 4 后面補上 00,變成 4.00 返回。
(2)使用樣例
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//保留n位小數並格式化輸出(不足的部分補0)
var
fomatFloat =
function
(value, n) {
var
f = Math.round(value*Math.pow(10,n))/Math.pow(10,n);
var
s = f.toString();
var
rs = s.indexOf(
'.'
);
if
(rs < 0) {
s +=
'.'
;
}
for
(
var
i = s.length - s.indexOf(
'.'
); i <= n; i++){
s +=
"0"
;
}
return
s;
}
|
1
2
3
4
|
var
num1 = fomatFloat(5/3, 2);
// 1.67
var
num2 = fomatFloat(4, 2);
// 4.00
var
num3 = fomatFloat(0.015, 2);
// 0.02
var
num4 = fomatFloat(0.025, 2);
// 0.03
|
原文出自:www.hangge.com 轉載請保留原文鏈接:https://www.hangge.com/blog/cache/detail_1791.html