How do you round to 1 decimal place in Javascript?

前端 未结 21 1441
难免孤独
难免孤独 2020-11-22 08:49

Can you round a number in javascript to 1 character after the decimal point (properly rounded)?

I tried the *10, round, /10 but it leaves two decimals at the end of

相关标签:
21条回答
  • 2020-11-22 09:05

    If you care about proper rounding up then:

    function roundNumericStrings(str , numOfDecPlacesRequired){ 
         var roundFactor = Math.pow(10, numOfDecPlacesRequired);  
         return (Math.round(parseFloat(str)*roundFactor)/roundFactor).toString();  }
    

    Else if you don't then you already have a reply from previous posts

    str.slice(0, -1)
    
    0 讨论(0)
  • 2020-11-22 09:08

    lodash has a round method:

    _.round(4.006);
    // => 4
    
    _.round(4.006, 2);
    // => 4.01
    
    _.round(4060, -2);
    // => 4100
    

    Docs.

    Source.

    0 讨论(0)
  • 2020-11-22 09:09

    I made one that returns number type and also places decimals only if are needed (no 0 padding).

    Examples:

    roundWithMaxPrecision(11.234, 2); //11.23
    roundWithMaxPrecision(11.234, 1); //11.2
    roundWithMaxPrecision(11.234, 4); //11.23
    roundWithMaxPrecision(11.234, -1); //10
    
    roundWithMaxPrecision(4.2, 2); //4.2
    roundWithMaxPrecision(4.88, 1); //4.9
    

    The code:

    function roundWithMaxPrecision (n, precision) {
        let precisionWithPow10 = Math.pow(10, precision);
        return Math.round(n * precisionWithPow10) / precisionWithPow10;
    }
    
    0 讨论(0)
  • 2020-11-22 09:14
    function rnd(v,n=2) {
        return Math.round((v+Number.EPSILON)*Math.pow(10,n))/Math.pow(10,n)
    }
    

    this one catch the corner cases well

    0 讨论(0)
  • 2020-11-22 09:15

    Math.round(num * 10) / 10 works, here is an example...

    var number = 12.3456789
    var rounded = Math.round(number * 10) / 10
    // rounded is 12.3
    

    if you want it to have one decimal place, even when that would be a 0, then add...

    var fixed = rounded.toFixed(1)
    // fixed is always to 1 d.p.
    // NOTE: .toFixed() returns a string!
    
    // To convert back to number format
    parseFloat(number.toFixed(2))
    // 12.34
    // but that will not retain any trailing zeros
    
    // So, just make sure it is the last step before output,
    // and use a number format during calculations!
    

    EDIT: Add round with precision function...

    Using this principle, for reference, here is a handy little round function that takes precision...

    function round(value, precision) {
        var multiplier = Math.pow(10, precision || 0);
        return Math.round(value * multiplier) / multiplier;
    }
    

    ... usage ...

    round(12345.6789, 2) // 12345.68
    round(12345.6789, 1) // 12345.7
    

    ... defaults to round to nearest whole number (precision 0) ...

    round(12345.6789) // 12346
    

    ... and can be used to round to nearest 10 or 100 etc...

    round(12345.6789, -1) // 12350
    round(12345.6789, -2) // 12300
    

    ... and correct handling of negative numbers ...

    round(-123.45, 1) // -123.4
    round(123.45, 1) // 123.5
    

    ... and can be combined with toFixed to format consistently as string ...

    round(456.7, 2).toFixed(2) // "456.70"
    
    0 讨论(0)
  • 2020-11-22 09:17
    var number = 123.456;
    
    console.log(number.toFixed(1)); // should round to 123.5
    
    0 讨论(0)
提交回复
热议问题