Javascript格式浮点数

时间:2015-09-16 11:40:54

标签: javascript floating-point formatting number-formatting

我需要格式化一个数字,使其始终具有3位数,因此数字应该如下所示

format(0) -> 0.00
format(1.3456) -> 1.34
format(12) -> 12.0
format(529.96) -> 529
format(12385.123) -> 12.3K

这些数字也应该向下舍入,我无法想出一个有效的方法来做所有这些,任何帮助?

2 个答案:

答案 0 :(得分:3)

对于数字0 - 1000:

function format( num ){
    return ( Math.floor(num * 1000)/1000 )  // slice decimal digits after the 2nd one
    .toFixed(2)  // format with two decimal places
    .substr(0,4) // get the leading four characters
    .replace(/\.$/,''); // remove trailing decimal place separator
}

// > format(0)
// "0.00"
// > format(1.3456)
// "1.34"
// > format(12)
// "12.0"
// > format(529.96)
// "529"

现在,对于数字1000 - 999 999,您需要将它们除以1000并附加" K"

function format( num ){
    var postfix = '';
    if( num > 999 ){
       postfix = "K";
       num = Math.floor(num / 1000);
    }
    return ( Math.floor(num * 1000)/1000 )
    .toFixed(2)
    .substr(0,4)
    .replace(/\.$/,'') + postfix;
}
// results are the same for 0-999, then for >999:
// > format(12385.123)
// "12.3K"
// > format(1001)
// "1.00K"
// > format(809888)
// "809K"

如果您需要将1 000 000格式化为1.00M,那么您可以使用" M"添加另一个条件。后缀等。

编辑:演示至数万亿:http://jsfiddle.net/hvh0w9yp/1/

答案 1 :(得分:0)