gpt4 book ai didi

javascript - 有没有类似Math的库支持JavaScript BigInt?

转载 作者:行者123 更新时间:2023-12-03 01:18:38 28 4
gpt4 key购买 nike

我正在尝试使用数学库的一些函数,例如(pow、floor 等)。然而,当我尝试将它们与这样的 Big Int 一起使用时......

let x = Math.pow(100n, 100n);

我明白

TypeError: Cannot convert a BigInt value to a number

当然我可以自己实现这个,比如......

const BigMath ={
pow(num, pow){
let total;
for(let i = 0; i < pow; i++){
if(!total) total = num;
else total = total * num;
}
return total;
}
}
let x = BigMath.pow(100n, 100n);

但我不想返回并重新实现所有功能。特别是从我的实现看来,它应该能够毫无问题地处理它。

那么我如何使用 BigInt 处理 Math.* ?

最佳答案

对于pow(),您可以简单地使用**运算符:

Math.pow(2, 175)
// 4.789048565205903e+52
2**175
// 4.789048565205903e+52
2n**175n
// 47890485652059026823698344598447161988085597568237568n

floor() 与大多数 Math 函数一样与整数无关。

事实上,只有 5 个数学函数与整数相关:

  • Math.abs()
  • Math.max()
  • Math.min()
  • Math.pow()
  • Math.sign()

所有其他函数都涉及实数:

  • 三 Angular 函数(cosacossinasintan , atan, atan2)
  • 双曲函数(coshacoshsinhasinhtanh , atanh)
  • 根(sqrtcbrthypot)
  • 圆形(圆形ceil地板trunc)
  • 对数 (exp, expm1, log, log10, log1p, log2)
  • 随机(随机)
  • 位(clz32froundimul)

因此,这里相当于 BigIntMath:

const bigMath = {
abs(x) {
return x < 0n ? -x : x
},
sign(x) {
if (x === 0n) return 0n
return x < 0n ? -1n : 1n
},
pow(base, exponent) {
return base ** exponent
},
min(value, ...values) {
for (const v of values)
if (v < value) value = v
return value
},
max(value, ...values) {
for (const v of values)
if (v > value) value = v
return value
},
}

关于javascript - 有没有类似Math的库支持JavaScript BigInt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com