欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

js保留两位小数方法总结 小数点固定保留两位小数 浮点数 强制整数格式化为小数点后保留两位 不够补上.00 有大用 有大大用

本文是小编针对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
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<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>

用Javascript取float型小数点后两位,例22.127456取成22.13,如何做?

1.丢弃小数部分,保留整数部分

1
parseInt(5/2)

2.向上取整,有小数就整数部分加1

1
Math.ceil(5/2)

3,四舍五入.

1
Math.round(5/2)

4,向下取整

1
Math.floor(5/2)

另类的方法

1. 最笨的办法

1
2
3
4
5
6
function get()
{
  var s = 22.127456 + "";
  var str = s.substring(0,s.indexOf(".") + 3);
  alert(str);
}

2. 正则表达式效果不错

1
2
3
4
5
6
7
8
9
<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,"$1");
  alert(aNew);
}
</script>

3. 他就比较聪明了

1
2
3
4
<script>
var num=22.127456;
alert( Math.round(num*100)/100);
</script>

4.会用新鲜东西的朋友....... 但是需要 IE5.5+才支持。

5.js保留2位小数(强制)

对于小数点位数大于2位的,用上面的函数没问题,但是如果小于2位的,比如:changeTwoDecimal(3.1),将返回3.1,如果你一定需要3.10这样的格式,那么需要下面的这个函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}

三、js保留两位小数,自动补充零

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function returnFloat(value){
 var value=Math.round(parseFloat(value)*100)/100;
 var xsd=value.toString().split(".");
 if(xsd.length==1){
 value=value.toString()+".00";
 return value;
 }
 if(xsd.length>1){
 if(xsd[1].length<2){
 value=value.toString()+"0";
 }
 return value;
 }
}

四、JS取整数,js取绝对值,js四舍五入(可保留两位小数)

JS取整数,js取绝对值,js四舍五入(可保留两位小数)函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<SCRIPT language=javascript>
<!--
function jsMath()
{
    document.write(Math.floor(5.80) + "<br>");//取整或下舍入
    document.write(Math.round(5.80) + "<br>");//四舍五入,取整数
    document.write(Math.round((5.80*100)/100) + "<br>");//四舍五入,保留两位小数
    document.write(Math.ceil(5.10) + "<br>");//上舍入
    document.write(Math.abs(-5.80) + "<br>");//取绝对值
    document.write(Math.max(55,58) + "<br>");//返回两个值中最大数
    document.write(Math.min(55,58) + "<br>");//返回两个值中最小数
}
-->
</SCRIPT>
<div>
<script>jsMath();</script>
</div>

总结

JS数据格式化是在进行web前端开发时常碰到的事情,特别是在数据类型为Float的数据就需要特殊处理,如保留两位小数、小数点后的数据是否需要四舍五入等等。下面就来介绍实现数据格式化保留两位小数的多种方法。

1、JS自带的方法toFixed(),toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

语法:NumberObject.toFixed(num),mun是必需的参数,即规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替,所以toFixed() 方法可以实现保留2位、3位、4位等等,取决于num的数值。

返回值:返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。

当调用该方法的对象不是 Number 时抛出 TypeError 异常。

1
2
3
4
5
<script type=”text/javascript”>
var num = new Number(13.376954);
document.write (num.toFixed(2))
</script>
输出:13.38

2、自定义函数实现小数保留并四舍五入。

1
2
3
4
5
6
7
8
9
10
function roundFun(numberRound,roundDigit) { //四舍五入,保留位数为roundDigit
if (numberRound>=0){
var tempNumber = parseInt((numberRound * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);
return tempNumber;
} else{
numberRound1=-numberRound;
var tempNumber = parseInt((numberRound1 * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);
return -tempNumber;
}
}

然后调用roundFun()这个函数就可以了。如roundFun('13.376954′,2);当然返回的结果跟第一种方法是一样的。

3、通过函数截取,截取到小数点后面第几位,当然这种方法就没有四舍五入了。

1
2
3
4
5
<script type=”text/javascript”>
tmp = 13.376954″
result = tmp.substr(0,tmp.indexOf(“.”)+2);
alert(result);
</script>

以上就是小编为大家整理的关于js保留两位小数方法的总结内容,感谢你的支持,如果你对js保留两位小数方法还有任何不明白的地方,可以在下方的留言区讨论。

来自  https://www.jb51.net/article/134067.htm



js处理数字保留2位小数,强制保留2位小数不够补上.00

1、保留两位小数    //功能:将浮点数四舍五入,取小数点后2位

2、//制保留2位小数,如:2,会在2后面补上00.即2.00  


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Test</title>
  6. <script type="text/javascript" src="js/jq.js"></script>
  7. </head>
  8. <script type="text/javascript">  
  9. //保留两位小数  
  10. //功能:将浮点数四舍五入,取小数点后2位  
  11. function toDecimal(x) {
  12. var f = parseFloat(x);
  13. if (isNaN(f)) {
  14. return;
  15. }
  16. f = Math.round(x*100)/100;
  17. return f;
  18. }
  19. //制保留2位小数,如:2,会在2后面补上00.即2.00  
  20. function toDecimal2(x) {
  21. var f = parseFloat(x);
  22. if (isNaN(f)) {
  23. return false;
  24. }
  25. var f = Math.round(x*100)/100;
  26. var s = f.toString();
  27. var rs = s.indexOf('.');
  28. if (rs < 0) {
  29. rs = s.length;
  30. s += '.';
  31. }
  32. while (s.length <= rs + 2) {
  33. s += '0';
  34. }
  35. return s;
  36. }
  37. function fomatFloat(src,pos){
  38. return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
  39. }
  40. document.write("四舍五入  <br/>")
  41. document.write("3.14159267保留2位小数:" + toDecimal(3.14159267)+"<br/>");
  42. document.write("3.14159267强制保留2位小数:" + toDecimal2(3.14159267)+"<br/>");
  43. document.write("3.14159267保留2位小数:" + toDecimal(3.14559267)+"<br/>");
  44. document.write("3.14159267强制保留2位小数:" + toDecimal2(3.15159267)+"<br/>");
  45. document.write("3.14159267保留2位小数:" + fomatFloat(3.14559267, 2)+"<br/>");
  46. document.write("3.14159267保留1位小数:" + fomatFloat(3.15159267, 1)+"<br/>");
  47. document.write("五舍六入  <br/>")
  48. document.write("1000.003保留2位小数:" + 1000.003.toFixed(2)+"<br/>");
  49. document.write("1000.08保留1位小数:" + 1000.08.toFixed(1)+"<br/>");
  50. document.write("1000.04保留1位小数:" + 1000.04.toFixed(1)+"<br/>");
  51. document.write("1000.05保留1位小数:" + 1000.05.toFixed(1)+"<br/>");
  52. document.write("科学计数  <br/>")
  53. document.write(3.1415+"科学技术后:"+3.1415.toExponential(2)+"<br/>");
  54. document.write(3.1455+"科学技术后:"+3.1455.toExponential(2)+"<br/>");
  55. document.write(3.1445+"科学技术后:"+3.1445.toExponential(2)+"<br/>");
  56. document.write(3.1465+"科学技术后:"+3.1465.toExponential(2)+"<br/>");
  57. document.write(3.1665+"科学技术后:"+3.1665.toExponential(1)+"<br/>");
  58. document.write("精确到n位,不含n位  <br/>")
  59. document.write("3.1415精确到小数点第2位" + 3.1415.toPrecision(2)+"<br/>");
  60. document.write("3.1455精确到小数点第3位" + 3.1465.toPrecision(3)+"<br/>");
  61. document.write("3.1445精确到小数点第2位" + 3.1415.toPrecision(2)+"<br/>");
  62. document.write("3.1465精确到小数点第2位" + 3.1455.toPrecision(2)+"<br/>");
  63. document.write("3.166592679287精确到小数点第5位" + 3.141592679287.toPrecision(5)+"<br/>");
  64. </script>  
  65. <body>
  66. <input type="text" id="Score" />
  67. </body>
  68. </html>

js处理数字相关文章:

onkeyup限制输入框只能输入数字

移动端手机网站限制input只能输入数字

toFixed方法重写,toFixed四舍五入在数值很小时的精度问题


js处理数字保留2位小数,强制保留2位小数不够补上.00

数字格式化,格式数字保留2位小数点,格式数字自定义保留n位小数点

js数字金额大写转换


数字格式化相关文章:

数字格式化,格式数字保留2位小数点,格式数字自定义保留n位小数点

数字格式化为金额格式 (3位一个逗号隔开)如:100,000.00 

js 填写银行卡号时,每4个数字用空格隔开

js限制数字相关文章:


来自  https://blog.csdn.net/kongjiea/article/details/42643091





js保留两位小数,自动补充零

function returnFloat(value){
 var value=Math.round(parseFloat(value)*100)/100;
 var xsd=value.toString().split(".");
 if(xsd.length==1){
 value=value.toString()+".00";
 return value;
 }
 if(xsd.length>1){
 if(xsd[1].length<2){
 value=value.toString()+"0";
 }
 return value;
 }
}


来自  https://blog.csdn.net/u011112011/article/details/70801645

普通分类: