智能显示小数位?

时间:2011-09-19 15:34:18

标签: javascript

我想在JavaScript中智能地显示小数位(即无需在冗长的小数位或大量的尾随零之间进行选择)。这是我原来的清单:

6
8
12.225252

目前我正在使用toFixed(1),并且输出如下:

6.0
8.0
12.2

我有办法得到:

6
8
12.2

代替?显然,我可以编写一些自定义代码来执行此操作,但是有什么内置的JavaScript吗?

3 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:1)

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

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

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

编辑当然对“6.001”也无济于事。

答案 2 :(得分:0)

尝试向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