gpt4 book ai didi

javascript - 如何在 javascript 中读取 20 位整数?

转载 作者:行者123 更新时间:2023-11-30 08:20:48 24 4
gpt4 key购买 nike

JavaScript 中我有一个 20 位的变量(16287008619584270370),我想将它转换成 64 位的二进制,但是当我使用二进制转换代码(下面提到)时,它没有显示真正的 64 位二进制。

var tag = 16287008619584270370;
var binary = parseInt(tag, 10).toString(2);

dec2bin 代码实现后:

-1110001000000111000101000000110000011000000010111011000000000000

正确的二进制应该是:

-1110001000000111000101000000110000011000000010111011000011000010

(最后 8 个二进制文件已更改)

当我检查问题时,我了解到代码仅读取最多 16 位的变量,之后它假定为 0000 并显示该变量的二进制文件 (16287008619584270000)。

所以最后我需要一个来自任何地方的代码,将我的整个 20 位数字转换成它在 java 脚本中的实际二进制数。

最佳答案

问题的出现是因为 64 位浮点表示的精度有限。当你这样做的时候:

var tag = 16287008619584270370;

...你失去了精度。如果你输出那个数字,你会发现它会少 370。 JS 无法在其数字数据类型中表示给定的数字。

您可以使用 BigNumber 库(或许多替代品):

const tag = BigNumber("16287008619584270370");
console.log(tag.toString(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/8.0.1/bignumber.min.js"></script>

确保将大数字作为字符串传递,否则您甚至在开始之前就已经失去了精度。

future

在撰写 native BigInt 提案时处于第 3 阶段,BigInt 已在 Chrome 中发布,并且正在 Node、Firefox 和 Safari 中进行。”

该更改包括引入 BigInt 后缀为“n”的语言扩展:

var tag = 16287008619584270370n;

关于javascript - 如何在 javascript 中读取 20 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53956459/

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