Truncate number to two decimal places without rounding

前端 未结 30 3328
再見小時候
再見小時候 2020-11-22 09:08

Suppose I have a value of 15.7784514, I want to display it 15.77 with no rounding.

var num = parseFloat(15.7784514);
document.write(num.toFixed(1)+\"
30条回答
  •  面向向阳花
    2020-11-22 09:58

    Building on David D's answer:

    function NumberFormat(num,n) {
      var num = (arguments[0] != null) ? arguments[0] : 0;
      var n = (arguments[1] != null) ? arguments[1] : 2;
      if(num > 0){
        num = String(num);
        if(num.indexOf('.') !== -1) {
          var numarr = num.split(".");
          if (numarr.length > 1) {
            if(n > 0){
              var temp = numarr[0] + ".";
              for(var i = 0; i < n; i++){
                if(i < numarr[1].length){
                  temp += numarr[1].charAt(i);
                }
              }
              num = Number(temp);
            }
          }
        }
      }
      return Number(num);
    }
    
    console.log('NumberFormat(123.85,2)',NumberFormat(123.85,2));
    console.log('NumberFormat(123.851,2)',NumberFormat(123.851,2));
    console.log('NumberFormat(0.85,2)',NumberFormat(0.85,2));
    console.log('NumberFormat(0.851,2)',NumberFormat(0.851,2));
    console.log('NumberFormat(0.85156,2)',NumberFormat(0.85156,2));
    console.log('NumberFormat(0.85156,4)',NumberFormat(0.85156,4));
    console.log('NumberFormat(0.85156,8)',NumberFormat(0.85156,8));
    console.log('NumberFormat(".85156",2)',NumberFormat(".85156",2));
    console.log('NumberFormat("0.85156",2)',NumberFormat("0.85156",2));
    console.log('NumberFormat("1005.85156",2)',NumberFormat("1005.85156",2));
    console.log('NumberFormat("0",2)',NumberFormat("0",2));
    console.log('NumberFormat("",2)',NumberFormat("",2));
    console.log('NumberFormat(85156,8)',NumberFormat(85156,8));
    console.log('NumberFormat("85156",2)',NumberFormat("85156",2));
    console.log('NumberFormat("85156.",2)',NumberFormat("85156.",2));
    
    // NumberFormat(123.85,2) 123.85
    // NumberFormat(123.851,2) 123.85
    // NumberFormat(0.85,2) 0.85
    // NumberFormat(0.851,2) 0.85
    // NumberFormat(0.85156,2) 0.85
    // NumberFormat(0.85156,4) 0.8515
    // NumberFormat(0.85156,8) 0.85156
    // NumberFormat(".85156",2) 0.85
    // NumberFormat("0.85156",2) 0.85
    // NumberFormat("1005.85156",2) 1005.85
    // NumberFormat("0",2) 0
    // NumberFormat("",2) 0
    // NumberFormat(85156,8) 85156
    // NumberFormat("85156",2) 85156
    // NumberFormat("85156.",2) 85156
    

提交回复
热议问题