Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何划分两个本机JavaScript BigInt';s并得到一个十进制结果_Javascript_Biginteger_Bigint - Fatal编程技术网

如何划分两个本机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@Pointy
Number(BigInt('12340000000000000001'))
不起作用,因为使用BigInt的全部目的是保持完整的精度,如果你只是将它转换成一个数字,你会失去这个精度。结果是,
12340000000000000000
@Pointy指向你的第二个注释……是的,我想这可能是不可行的,但是官方推荐的lib作为回退可以做到这一点JSBI中的等效项是
JSBI.divide('123400000000000','1000000000000000000')
请参阅我的答案的加法。@noririco,它在“12.345678912345678987”中给出了相同的输出@trincot谢谢!我的错误是
static decimals=18;
不是
static
原因是
toString
中的字符串
s
没有足够的数字在正确的位置插入小数点。现在已修复。感谢您发现了这一点。仅供参考,我有一个版本的答案是加法、减法、乘法和四舍五入到