wopelo 2017-09-25 14:56 采纳率: 0%
浏览 1225

超过16位且最后一位是1的整数会出现一个奇葩的问题

之前在牛客做笔试题时发现了这样一个问题 :
定义c为10011100011101111的字符串,不管是显示转换还是隐式转换最后出来的数字都是10011100011101112
图片说明
更进一步实验发现,把10011100011101111赋予变量oo,再输出oo,结果为10011100011101112
图片说明
目前通过实验发现超过16位且最后一位是1的整数在字符串/数字相互转换的时候会出现问题,并且出现问题的直接原因是定义之后这些数字会比原值多1,但这个范围并没有超出js能够表示的最大范围
一下几个数大家可以试一下
10001000101111011
10001000111011111
10011100011101111
10101111110010001
10101111110101111

发现这个问题的笔试题是牛客网上《2017校招真题编程练习》中有一道来自京东的《幸运数》,题目要求找出这样子的十进制数:十进制下每一位的和等于转为二进制后每一位的和。在解题的过程中发现有些十进制的数在转二进制后两种表示方式表示出来的值不一样——这样就是为什么前面举的例子中的数字看起来都像二进制数。

  • 写回答

1条回答

  • I1326 2017-09-26 08:07
    关注

    这个蛋疼的问题是因为javascript没有long类型,不支持高精度运算是2的多少次方我忘记了,有兴趣你可以查一下,超过这个限制后js就抽了

    评论

报告相同问题?

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛