如何获取小数的大数幂?

时间:2019-06-24 08:13:52

标签: javascript

如何获取小数点2或2的大幂 如何将大指数值转换为十进制值。

我希望2的小数位数不是128的幂 直到现在我所做的

tofixed(+exponent) 

这又给了我相同的价值。

 var num =  Math.pow(2, 128);

实际结果= 3.402823669209385e + 38 期望一些十进制值而不是指数值。

3 个答案:

答案 0 :(得分:3)

如果已实现,则可以使用BigInt

var num =  BigInt(2) ** BigInt(128);

console.log(num.toString());
console.log(BigInt(2 ** 128).toString());

答案 1 :(得分:2)

3.402823669209385e+38 是一个十进制数字(采用字符串形式,因为它已作为字符串输出)。采用科学表示法,尤其是E-notation。是3.402823669209385乘以100000000000000000000000000000000000000的数字。

如果您要使用科学表示形式的字符串,则可以使用Intl.NumberFormat

console.log(new Intl.NumberFormat().format(Math.pow(2, 128)));

注意:尽管该数字很好超出了JavaScript的数字类型通常可以精确表示的范围(Number.MAX_SAFE_INTEGER以上的任何整数[9,007,199,254,740,991是四舍五入的结果),它是 精确地保持的值之一,即使在这样的幅度下也是如此,因为它是2的幂。但是对其进行的运算将没有一个真正的数学结果,几乎可以肯定的是2的幂会被舍入。

答案 2 :(得分:-2)

我认为默认的幂函数将无法获得您想要的结果。 您可以参考下面的文章,以了解如何自己创建具有大数的Power函数。

演示代码不是JS,但仍然可以理解。

Writing power function for large numbers