我想在JavaScript中智能地显示小数位(即无需在冗长的小数位或大量的尾随零之间进行选择)。这是我原来的清单:
6
8
12.225252
目前我正在使用toFixed(1)
,并且输出如下:
6.0
8.0
12.2
我有办法得到:
6
8
12.2
代替?显然,我可以编写一些自定义代码来执行此操作,但是有什么内置的JavaScript吗?
答案 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