Javascript 格式浮点数

Javascript format float number

我需要将数字格式化为始终包含 3 位数字,因此数字应如下所示

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

数字也应该四舍五入,我很难想出一个有效的方法来做这一切,有什么帮助吗?

尝试以下两个链接之一:

http://www.w3schools.com/jsref/jsref_round.asp

Round to at most 2 decimal places (only if necessary)

对于数字 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/