Rounded
The following processing results are rounded: '
var
num =2.446242342;
num = num.toFixed(2);
// 输出结果为 2.45
not rounded
The following processing results are not rounded:
First, put the decimal-side integer First:
Math.floor(15.7784514000 * 100) / 100
// 输出结果为 15.77
The second, as a string, uses a regular match:
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))
// 输出结果为 15.77,不能用于整数如 10 必须写为10.0000
Note: If it is a negative number, convert it to a positive number and then the negative
JavaScript retains an instance of two decimal places:
<script type=
"text/javascript"
>
//保留两位小数
//功能:将浮点数四舍五入,取小数点后2位
function
toDecimal(x) {
var
f = parseFloat(x);
if
(isNaN(f)) {
return
;
}
f = Math.round(x*100)/100;
return
f;
}
//制保留2位小数,如:2,会在2后面补上00.即2.00
function
toDecimal2(x) {
var
f = parseFloat(x);
if
(isNaN(f)) {
return
false
;
}
var
f = Math.round(x*100)/100;
var
s = f.toString();
var
rs = s.indexOf(
‘.‘
);
if
(rs < 0) {
rs = s.length;
s +=
‘.‘
;
}
while
(s.length <= rs + 2) {
s +=
‘0‘
;
}
return
s;
}
function
fomatFloat(src,pos){
return
Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
}
//四舍五入
alert(
"保留2位小数:"
+ toDecimal(3.14159267));
alert(
"强制保留2位小数:"
+ toDecimal2(3.14159267));
alert(
"保留2位小数:"
+ toDecimal(3.14559267));
alert(
"强制保留2位小数:"
+ toDecimal2(3.15159267));
alert(
"保留2位小数:"
+ fomatFloat(3.14559267, 2));
alert(
"保留1位小数:"
+ fomatFloat(3.15159267, 1));
//五舍六入
alert(
"保留2位小数:"
+ 1000.003.toFixed(2));
alert(
"保留1位小数:"
+ 1000.08.toFixed(1));
alert(
"保留1位小数:"
+ 1000.04.toFixed(1));
alert(
"保留1位小数:"
+ 1000.05.toFixed(1));
//科学计数
alert(3.1415.toExponential(2));
alert(3.1455.toExponential(2));
alert(3.1445.toExponential(2));
alert(3.1465.toExponential(2));
alert(3.1665.toExponential(1));
//精确到n位,不含n位
alert(
"精确到小数点第2位"
+ 3.1415.toPrecision(2));
alert(
"精确到小数点第3位"
+ 3.1465.toPrecision(3));
alert(
"精确到小数点第2位"
+ 3.1415.toPrecision(2));
alert(
"精确到小数点第2位"
+ 3.1455.toPrecision(2));
alert(
"精确到小数点第5位"
+ 3.141592679287.toPrecision(5));
</script>
Use JavaScript to take the float type decimal point two, example 22.127456 to take 22.13, how to do?
1. Discard the fractional part, preserving the whole number of parts
parseint (5/2)
2. Rounding up, with decimals on the integer part plus 1
Math.ceil (5/2)
3, rounded.
Math.Round (5/2)
4, rounding down
Math.floor (5/2)
Alternative approach
1. The stupidest Way
function Get ()
{
var s = 22.127456 + "";
var str = s.substring (0,s.indexof (".") + 3);
alert (str);
}
2. Regular expression effect is good
<script type= "Text/javascript" >
onload = function () {
var a = "23.456322";
var anew;
var re =/([0-9]+.[ 0-9]{2}) [0-9]*/;
anew = A.replace (Re, "$");
alert (anew);
}
</script>
3. He is more clever ...
<script>
var num=22.127456;
Alert (Math.Round (num*100)/100);
</script>
5.js Reserved 2 decimal places (mandatory)
For the number of decimal places greater than 2 bits, with the above function is not a problem, but if less than 2 bits, such as: Changetwodecimal (3.1), will return 3.1, if you must need 3.10 such a format, then you need the following function:
function Changetwodecimal_f (x) {
var f_x = parsefloat (x);
if (IsNaN (f_x)) {
Alert (' Function:changetwodecimal->parameter error ');
return false;
}
var f_x = math.round (x * 100)/100;
var s_x = f_x.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;
}
Function: Rounding the floating-point number, take 2 digits after the decimal point, if less than 2 bit 0,
This function returns the format usage of the string: Changetwodecimal (3.1415926) returns 3.14 Changetwodecimal (3.1) returns 3.10
A method of double digit after the decimal point of JS take float type