使用.toFixed()将指数级小数四舍五入。

7
我如何将这样的指数小数四舍五入:2.4451778232910804e-26.toFixed(4) => 2.4452e-26。在文档中,使用.toFixed()每次都会给我0。是否有一个专门用于“指数小数”的函数? 我宁愿不修改Number.prototype.toFixed()

https://github.com/jtobey/javascript-bignum - Sunil B N
你的例子中的数字似乎是一个指数级别的小数,实际上并不是负数 => 0.000(x26)000244517... 因此,我认为无论它是正数还是负数,在任何舍入形式下都会返回为0。http://www.2ality.com/2012/03/displaying-numbers.html 这种情况会引起什么问题? - Sam0
1个回答

4
正如你所写的,toFixed不够准确,因为它只允许最多20位小数。乘法和除法也行不通,因为除法可能再次给你带来不准确的更长数字。但是toPrecision(<amount-of-precision>)可能有所帮助。
编辑:如果你想要4个小数位,你需要传递5作为参数(因为小数点前面的数字也算在内)。 toPrecision将会给你一个字符串,但是如果需要,你可以很容易地将其转回数字,例如Number(someNumberAsString)

var someNumber = 2.4451778232910804e-26;
console.log(someNumber);
console.log(someNumber.toPrecision(8));


1
从技术上讲,20是一个软限制:“小数点后要显示的数字位数;这个值可以是0到20之间的任意值,包括0和20,并且实现可以选择性地支持更大范围的值。” Mozilla的SpiderMonkey允许最多为100 - Alexander O'Mara
确实,.toPrecision() 使这成为可能。一直在苦苦挣扎 .toFixed(),但显然还不够。感谢您用示例解释,非常感谢您的回答!(现在我看到了 toPrecision()toFixed() 之间的区别 x) - nehel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接