在JS中格式化数字

时间:2013-09-11 23:39:43

标签: javascript string numbers

我想以灵活的方式向用户显示数字信息。 toFixedtoPrecision始终使用零填充,这是不受欢迎的。理想情况下,我可以表达:

  • 5.450000000001应显示为“5.45”
  • 6.0应显示为“6”
  • 5.45001应显示为“5.45001”,但我也想明确说“使用不超过2位小数”,在这种情况下,这应显示为“5.45”。

是否有良好的JS库以这种方式显示数字?如果没有,我可以翻译一些其他语言的好图书馆吗?

1 个答案:

答案 0 :(得分:2)

为了这个目的,您可能不需要整个库。例如,您可以使用toFixed(2)然后删除尾随0和一个尾随小数点:

function format_number(x){
  return ((+x).toFixed(2)+'').replace(/\.?0*$/, '');
}

用法:

format_number(5.450000000001); // "5.45"
format_number("6.0"); // "6"
format_number("5.45001"); // "5.45"

接受最大小数点作为可选参数也很容易:

function format_number(x, digits){
  if(typeof digits != 'number')
    digits = 2;
  return ((+x).toFixed(digits)+'').replace(/\.?0*$/, '');
}

format_number(5.45001); // "5.45"
format_number(5.45001, 5); // "5.45001"