我需要格式化一个数字,使其始终具有3位数,因此数字应该如下所示
format(0) -> 0.00
format(1.3456) -> 1.34
format(12) -> 12.0
format(529.96) -> 529
format(12385.123) -> 12.3K
这些数字也应该向下舍入,我无法想出一个有效的方法来做所有这些,任何帮助?
答案 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)