zoukankan      html  css  js  c++  java
  • js保留两位小数方法总结

     

      最近在做结算系统,经常需要用到金额保留两位小数,刚开始我一直用的是Angular中的过滤器number |2,但是,这无法满足我的需求。问题是,当用户离开文本框时,我需要将用户输入的内容转换成保留两位小数的格式,我想了好久,没有想出来,然后我试了toFixed()方法,这个方法也不可行,因为它将数据转换成了字符串,传给后台是错的。然后,我就找了其他方法。现在刚好有空,所以就把相关保留两位小数的方法总结了一下,不同的场景用不同的方法,即用即取。

    一、四舍五入相关

    1、toFixed()方法

    需注意,保留两位小数,将数值类型的数据改变成了字符串类型

    1 // 1.四舍五入
    2         var num =2.446242342;  
    3         num = num.toFixed(2); 
    4         console.log(num); //2.45
    5         console.log(typeof num); // string

    2、Math.floor(),不四舍五入 ,向下取整

    注意,不改变数据类型

    1 // 2.不四舍五入 向下取整
    2         num = Math.floor(num * 100) / 100;
    3         console.log(num); //2.44
    4         console.log(typeof num); // number

    3、字符串匹配

    注意,先将数据转换为字符串,最后再转为数值类型

    1 // 3.不四舍五入 字符串匹配再转换
    2         num = Number(num.toString().match(/^d+(?:.d{0,2})?/));
    3         console.log(num); //2.44
    4         console.log(typeof num); // number

    4、四舍五入保留2位小数(若第二位小数为0,则保留一位小数)

    注意,数据类型不变

    复制代码
     1 //4.四舍五入保留2位小数(若第二位小数为0,则保留一位小数)  
     2         function keepTwoDecimal(num) {  
     3              var result = parseFloat(num);  
     4              if (isNaN(result)) {  
     5                  alert('传递参数错误,请检查!');  
     6                  return false;  
     7              }  
     8              result = Math.round(num * 100) / 100;  
     9              return result;  
    10         };
    11          keepTwoDecimal(num);
    12          console.log(num); //2.44
    13          console.log(typeof num); //number
    复制代码

    5、四舍五入保留2位小数(不够位数,则用0替补)

    注意,数据类型变为字符串类型

    复制代码
     1 //5.四舍五入保留2位小数(不够位数,则用0替补)  
     2         function keepTwoDecimalFull(num) {  
     3              var result = parseFloat(num);  
     4              if (isNaN(result)) {  
     5                  alert('传递参数错误,请检查!');  
     6                  return false;  
     7              }  
     8              result = Math.round(num * 100) / 100;  
     9              var s_x = result.toString(); //将数字转换为字符串
    10              
    11              var pos_decimal = s_x.indexOf('.'); //小数点的索引值
    12              
    13 
    14              // 当整数时,pos_decimal=-1 自动补0  
    15              if (pos_decimal < 0) {  
    16                  pos_decimal = s_x.length;  
    17                  s_x += '.';  
    18              }
    19 
    20              // 当数字的长度< 小数点索引+2时,补0  
    21              while (s_x.length <= pos_decimal + 2) {  
    22                  s_x += '0';  
    23              }  
    24              return s_x;  
    25         }  
    26 
    27          console.log(keepTwoDecimalFull(120.5)); //120.50
    28          console.log(typeof keepTwoDecimalFull(120.5)); //string
    29          console.log(keepTwoDecimalFull(2.446242342)); //2.45
    30          console.log(typeof keepTwoDecimalFull(2.446242342)); //string
    复制代码

    二、浮点数保留两位小数

    1、将浮点数四舍五入,取小数点后2位 

    注意,数据类型不变

    复制代码
     1 //浮点数保留两位小数   
     2           //1.功能:将浮点数四舍五入,取小数点后2位   
     3           function toDecimal(x) {   
     4            var f = parseFloat(x);   
     5            if (isNaN(f)) {   
     6             return;   
     7            }   
     8            f = Math.round(x*100)/100;   
     9            return f;   
    10           }   
    11           console.log(toDecimal(3.1465926)); // 3.15
    12           console.log(typeof toDecimal(3.1415926)); //number
    复制代码

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

    注意,数据类型变为字符串类型

    复制代码
     1 //2.强制保留2位小数,如:2,会在2后面补上00.即2.00   
     2           function toDecimal2(x) {   
     3            var f = parseFloat(x);   
     4            if (isNaN(f)) {   
     5             return false;   
     6            }   
     7            var f = Math.round(x*100)/100;   
     8            var s = f.toString();   
     9            var rs = s.indexOf('.');   
    10            if (rs < 0) {   
    11             rs = s.length;   
    12             s += '.';   
    13            }   
    14            while (s.length <= rs + 2) {   
    15             s += '0';   
    16            }   
    17            return s;   
    18           }   
    19           console.log(toDecimal2(3.1)); // 3.10
    20           console.log(typeof toDecimal2(3.1415926)); //string
    复制代码

    3、保留两位小数 浮点数四舍五入 位数不够 不补0

    注意,数据类型不变

    复制代码
    1 // 3.保留两位小数 浮点数四舍五入 位数不够 不补0
    2           function fomatFloat(src,pos){    
    3             return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);    
    4           } 
    5            console.log(fomatFloat(3.12645,2)); // 3.13
    6           console.log(typeof fomatFloat(3.1415926)); //number
    复制代码

    以上就是常用的js保留两位小数的方法,希望对大家有帮助!

    不要让梦想变成空想,行动起来!

     
     
     
  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/jiangyunfeng/p/11973192.html
Copyright © 2011-2022 走看看