>>>>> 浮点数保留小数点后两位的几种方法

保留两位小数

  • 四舍五入:
var num =2.446242342;
num = num.toFixed(2); // 输出结果为 2.45
  • 不四舍五入:
  • 先把小数变整数,再转化
Math.floor(15.7784514000 * 100) / 100  // 输出结果为 15.77
  • 当作字符串,使用正则匹配
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) 
// 输出结果为 15.77,不能用于整数如 10 必须写为10.0000 

数值取舍

  • 保留整数
parseInt(5/2)//2
  • 向上取整,有小数,整数就加1
Math.ceil(5/2)//3
  • 四舍五入
Math.round(5/2)//3
Math.round(5/3)//2
  • 向下取整
Math.floor(5/2)//2

如果没有明确规定一定要保留两位的,那就一般都不会有太大问题的l了,那么问题来了,对于要强制保留两位的,我们又该怎么办呢?特别是那种末尾还是0的,这不是又头大了?不要担心,上有政策,下有对策嘛

function keepTwoDecimalFloat(x) {
    var floatX = parseFloat(x);
    if (isNaN(floatX)) {
          return false;
    } 
    var floatX = Math.round(x * 100) / 100;
    var strX = floatX.toString(); 
    var posDecimal = strX.indexOf('.');
    if (posDecimal < 0) { 
            posDecimal = strX.length; 
            strX += '.';
    }
    while (strX.length <= posDecimal + 2) { 
            strX += '0'; 
    } 
    return strX;
}

你可能感兴趣的:(>>>>> 浮点数保留小数点后两位的几种方法)