如何划分两个本机JavaScript BigInt';s并得到一个十进制结果
这是我到目前为止试过的。我想得到一个如何划分两个本机JavaScript BigInt';s并得到一个十进制结果,javascript,biginteger,bigint,Javascript,Biginteger,Bigint,这是我到目前为止试过的。我想得到一个12.34: BigInt('123400000000000')/BigInt('1000000000000000000') 12n Number(BigInt('123400000000000')/BigInt('1000000000000000000')) 十二, FWIW,当我使用JSBI库时,它按照我所希望的方式工作: JSBI.BigInt('123400000000000')/JSBI.BigInt('1000000000000') 12.34 这
12.34
:
BigInt('123400000000000')/BigInt('1000000000000000000')
12n
Number(BigInt('123400000000000')/BigInt('1000000000000000000'))
十二,
FWIW,当我使用JSBI库时,它按照我所希望的方式工作:
JSBI.BigInt('123400000000000')/JSBI.BigInt('1000000000000')代码>
12.34
这在本机上是不可能的吗?您应该将分子乘以所需的位数,执行除法,然后用普通浮点除法除法
(在支持BigInt的浏览器中运行,如Chrome)
var a=12340000000000n;
var b=10000000000000000n;
控制台日志(编号(a*100n/b)/100)
那么Number(BigInt('x'))/Number(BigInt('y'))
呢?也就是说,两个本机数字的纯本机除法?否则,据我所知,你不能这样做,因为与BigInt
没有任何关系,因为BigDecimal
与中的biginger
相关Java@PointyNumber(BigInt('12340000000000000001'))
不起作用,因为使用BigInt的全部目的是保持完整的精度,如果你只是将它转换成一个数字,你会失去这个精度。结果是,12340000000000000000
@Pointy指向你的第二个注释……是的,我想这可能是不可行的,但是官方推荐的lib作为回退可以做到这一点JSBI中的等效项是JSBI.divide('123400000000000','1000000000000000000')
请参阅我的答案的加法。@noririco,它在“12.345678912345678987”中给出了相同的输出@trincot谢谢!我的错误是static decimals=18;
不是static
原因是toString
中的字符串s
没有足够的数字在正确的位置插入小数点。现在已修复。感谢您发现了这一点。仅供参考,我有一个版本的答案是加法、减法、乘法和四舍五入到