返回信息流目的是生成一个20位01随机序列。采用数组转字符串转数字的方法,但是字符串转数字出现了问题,最后几位一直为0,为什么?
另外,有没有生成20位01随机序列更好的方法?O(∩_∩)O谢谢
这是一条镜像帖。来源:北邮人论坛 / java-script / #2074同步于 2017/4/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【问题】问个字符串转数字的问题
faith
2017/4/27镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
在 JavaScript 中所有的 Number 都是 64 bit double 存的,如果你的数字大于2^53-1就会开始出现问题。ES6 添加了 Number.isSafeInteger 的方法来检测你的 int 是否是你想要的 int。很明显你的是 false。。。
还有。。。你为什么不转换成二进制?
明白了,谢谢
【 在 zoolsher 的大作中提到: 】
: 在 JavaScript 中所有的 Number 都是 64 bit double 存的,如果你的数字大于2^53-1就会开始出现问题。ES6 添加了 Number.isSafeInteger 的方法来检测你的 int 是否是你想要的 int。很明显你的是 false。。。
: 还有。。。你为什么不转换成二进制?
没看懂,能解释一下吗?3Q
【 在 DeHaan 的大作中提到: 】
: (~~((1<<19) * (1 + Math.random()))).toString(2)
: 试了试应该没问题
你上面代码得到的01序列,实际还是十进制,超了JS安全数值范围
20位01随机序列,数值大小在 [2^19, 2^20) 范围
1<<19 左移19位,第20位为1
序列数值 (1<<19) + (1<<19) * Math.random()
~~ 连续取反,其实在取整,parseInt也可以
最后把十进制转成二进制就好了
【 在 faith 的大作中提到: 】
: 没看懂,能解释一下吗?3Q
非常感谢
【 在 DeHaan 的大作中提到: 】
: 你上面代码得到的01序列,实际还是十进制,超了JS安全数值范围
: 20位01随机序列,数值大小在 [2^19, 2^20) 范围
: 1<<19 左移19位,第20位为1
: ...................