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/
我需要将数字格式化为始终包含 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/