本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容:
一、我们首先从经典的“四舍五入”算法讲起
1、四舍五入的情况
1
2
|
var
num =2.446242342;
num = num.toFixed(2);
// 输出结果为 2.45
|
2、不四舍五入
第一种,先把小数边整数:
1
|
Math.floor(15.7784514000 * 100) / 100
// 输出结果为 15.77
|
第二种,当作字符串,使用正则匹配:
1
|
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))
// 输出结果为 15.77,不能用于整数如 10 必须写为10.0000
|
注意:如果是负数,请先转换为正数再计算,最后转回负数
再分享一个经典的解决四舍五入问题后js保留两位小数的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
//四舍五入保留2位小数(若第二位小数为0,则保留一位小数)
function
keepTwoDecimal(num) {
var
result = parseFloat(num);
if
(isNaN(result)) {
alert(
'传递参数错误,请检查!'
);
return
false
;
}
result = Math.round(num * 100) / 100;
return
result;
}
//四舍五入保留2位小数(不够位数,则用0替补)
function
keepTwoDecimalFull(num) {
var
result = parseFloat(num);
if
(isNaN(result)) {
alert(
'传递参数错误,请检查!'
);
return
false
;
}
result = Math.round(num * 100) / 100;
var
s_x = result.toString();
var
pos_decimal = s_x.indexOf(
'.'
);
if
(pos_decimal < 0) {
pos_decimal = s_x.length;
s_x +=
'.'
;
}
while
(s_x.length <= pos_decimal + 2) {
s_x +=
'0'
;
}
return
s_x;
}
|
二、Js取float型小数点后两位数的方法
1
2
3
4
5
6
7
|