【发布时间】:2017-01-13 01:18:47
【问题描述】:
我有一个非常大的数字在 JavaScript 中表示为二进制:
var largeNumber = '11010011010110100001010011111010010111011111000010010111000111110011111011111000001100000110000011000001100111010100111010101110100010001011010101110011110000011000001100000110000011001001100000110000011000001100000110000111000011100000110000011000001100000110000011000010101100011001110101101001100110100100000110000011000001100000110001001101011110110010001011010001101011010100011001001110001110010100111011011111010000110001110010101010001111010010000101100001000001100001011000011011111000011110001110111110011111111000100011110110101000101100000110000011000001100000110000011010011101010110101101001111101001010010111101011000011101100110010011001001111101'
当我使用parseInt(largeNumber, 10)l 将其转换为十进制时,它给了我1.5798770299367407e+199,但是当我尝试将其转换回二进制时:
parseInt(`1.5798770299367407e+199`, 2)
当我期待看到largeNumber 的原始二进制表示时,它返回1(我认为这与parseInt 如何通过舍入值工作有关)。你能解释一下这种行为吗?以及如何在 JavaScript 中将其转换回原始状态?
编辑:这个问题是我在存储和传输大量布尔数据时的实验结果。 largeNumber 表示一个集合 [true,true,false,true ...] 的布尔值,必须在客户端、客户端工作人员和服务器之间共享。
【问题讨论】:
-
parseInt不是从一个数字系统转换为另一个数字系统的方法。你需要去阅读它实际做了什么,然后重新思考你如何实现你的最终结果。 -
“我有一个非常大的数字表示为二进制” 原始数字如何转换为
largeNumber? -
将数字字符串转换为数字不是无损过程。数字只有 64 位,不能存储太多信息。
-
这是一个布尔值的集合,它是我实验的结果。我试图将布尔数组存储为二进制数并将它们转换为十进制数,以查看是否可以执行该过程以提高内存效率
-
您是否考虑在问题中包含您对实际需求和预期结果的描述?它可能有助于解决实际需求?在阅读您在stackoverflow.com/questions/39334494/… 的评论之前,不确定您实际上想要实现什么
标签: javascript