智能显示小数点

Show decimal places intelligently?

本文关键字:小数点 显示 智能      更新时间:2023-09-26

我想在JavaScript中智能地显示小数点(即不必在冗长的小数点或大量的尾随零之间进行选择)。这是我的原始列表:

6
8
12.225252

目前我使用的是toFixed(1),输出如下:

6.0
8.0
12.2

有没有办法让我得到:

6
8
12.2

?显然,我可以编写一些自定义代码来做到这一点,但JavaScript中有任何内置的东西吗?

您可以使用Math.round

function roundTo(n, decimals) {
    var d = Math.pow(10, decimals);
    return Math.round(n * d)/d;
}

例子:

roundTo(6, 1)
6
roundTo(8, 1)
8
roundTo(12.623456, 1)
12.6

您可以检查值的下限是否与值本身相同:

if (Math.floor(x) === x) {
  // no fractional part
}

意识到浮点数是棘手和恼人的,所以在纯数学上,你可能最终得到小数部分,你不期望它们。

edit当然这对"6.001"也没有多大帮助。

尝试在Number原型中添加这样的函数:

Number.prototype.toFixedIfDecimal = function(places){
  var isWhole_re = /^'s*'d+'s*$/;
  if(String(this).search(isWhole_re) != -1)
    return this;
  else
    return this.toFixed(places);
}

那么你可以这样使用:

var myNumber1 = 8;
var myNumber2 = 10.512;
alert(myNumber1.toFixedIfDecimal(1)); // will return 8
alert(myNumber2.toFixedIfDecimal(1)); // will return 10.5