如何在javascript中获得高于21的数字toPrecision

时间:2017-05-22 20:16:40

标签: javascript precision

如何在javascript中获得高于21的数字toPrecision?

我收到这个号码 8.426661309628124e + 22

什么时候应该这样 8.4266613096281243382112

当我使用精确度(21)时,我得到了这个 8.42666130962812428616e + 22



entity_id




1 个答案:

答案 0 :(得分:2)

由于JavaScript对数字(double-precision floating point)的内部表示的精确度有限,您需要一个现有的Big Integer库来克服此限制。

例如,您可以使用bignumber.js



// Configure to (almost) never use scientific notation:
BigNumber.config({ EXPONENTIAL_AT: 1e+9 });
var val=10;
// Store the feb numbers as BigNumber instances:
feb=[new BigNumber(0), new BigNumber(1)];
for(var i=2; i<=val; i++){
    feb[i] = feb[i-2].plus(feb[i-1].toPower(2));
    console.log(feb[i].toString());
}    
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/4.0.2/bignumber.min.js"></script>
&#13;
&#13;
&#13;

请注意,其他一些语言会自动提供大整数,例如Python:

val=10
feb=[0,1]
for i in range(2, val+1):
    feb.append(feb[i-2] + feb[i-1] ** 2)
    print(feb[i])

repl.it上看到它。