根据http://www.mredkj.com/javascript/nfbasic2.html,以下代码将导致5.6e+2。
num = 555.55;
result = num.toPrecision(2); // result will equal 5.6e+2
如何让结果变量的输出不以科学计数法(即以e表示)的形式呈现?
根据http://www.mredkj.com/javascript/nfbasic2.html,以下代码将导致5.6e+2。
num = 555.55;
result = num.toPrecision(2); // result will equal 5.6e+2
如何让结果变量的输出不以科学计数法(即以e表示)的形式呈现?
要获得精度降低的浮点数,您可以像您所做的那样使用toPrecision()
,然后使用parseFloat()解析科学计数法,如下所示:
result = parseFloat(num.toPrecision(2));
Number((555.55).toPrecision(2))
我有类似的愿望,希望保留一定的精度,不要有尾随零,并且不使用科学计数法。我认为以下函数可以实现:
function toDecimalPrecision(val, digits) {
val = (+val).toPrecision(digits);
if (val.indexOf('e') >= 0) {
val = (+val).toString();
} else if (val.indexOf('.') >= 0) {
val = val.replace(/(\.|)0+$/, '');
}
return val;
}
尝试一下
result = Math.ceil(555.55);
556
,而不是 5.6e+2
所代表的 560
。 - David Hedlund这对我有用 [TypeScript]:
const toDecimalPrecision = (value: number, digits: number) => {
let fixed = 2
const result = parseFloat(value.toPrecision(digits))
while (parseFloat(result.toFixed(fixed)) !== result && fixed < 20) {
fixed++
}
return result.toFixed(fixed)
}
eval
是危险的。
应该使用以下方法:
var result = num.toPrecision(2).toString(10);
代替。
toPrecision(2)
意味着类似于toFixed(-1)
(由于实际上没有意义所以不存在)。 - David Hedlund24823492.293849 --> 25000000
),也可以处理带有小数位的数字(例如:1/5 + 1/20 - 1/200 + 1/400 + 1/10 = 0.34750000000000003 --> 0.35)。 - prototypetoPrecision()
的一个好处是它保留了尾随零,表明结果的精度(例如(0.5).toPrecision(2)
会得到 "0.50")。如果你想保持这种行为,你可以使用result = num.toPrecision(2).includes('e') ? parseFloat(num.toPrecision(2)) : num.toPrecision(2)
。 - ChrisVparseFloat((Math.round(value * 100000) /100000).toPrecision(2))
- stallingOne