js所能表示的最大整数的问题
来源:互联网 发布:美容院微管理软件 编辑:程序博客网 时间:2024/05/22 14:26
半个小时前在牛客做笔试题时发现了这样一个问题
定义c为10011100011101111的字符串,不管是显示转换还是隐式转换最后出来的数字都是10011100011101112
更进一步实验发现
把10011100011101111赋予变量oo,再输出oo,结果为10011100011101112
目前通过实验发现超过16位且最后一位是1的整数在字符串/数字相互转换的时候会出现问题,并且出现问题的直接原因是定义之后这些数字会比原值多1,但这个范围并没有超出js能够表示的最大范围。
一下几个数大家可以试一下
10001000101111011
10001000111011111
10011100011101111
10101111110010001
10101111110101111
发现这个问题的笔试题是牛客网上《2017校招真题编程练习》中有一道来自京东的《幸运数》,题目要求找出这样子的十进制数:十进制下每一位的和等于转为二进制后每一位的和。在解题的过程中发现有些十进制的数在转二进制后两种表示方式表示出来的值不一样——这样就是为什么前面举的例子中的数字看起来都像二进制数。
那么这个问题的产生的原因是什么呢?js能表示的浮点数的最大值是正负1.7976931348623157乘以10的308次方,其最小所能表示的小数为正负5乘以10的负324次方。但js能够表示整数的范围是正负数的绝对值都不能大于2^53,也就是正负数的绝对值都不能大于9007199254740992,这个数是16位,超过16位的整数就不能精确表示了,这就是问题所在。之前我一直以为没有超过1.7976931348623157乘以10的308次方的整数js都可以正确表示。。。。原来是理解错了,虚惊一场
- js所能表示的最大整数的问题
- [c++]机器能表示的最大整数
- JS 能表示的最大数值
- int 整形数所能表示的最大范围
- 用matlab求计算机所能表示的最大正数和最小正数
- 分别写出有符号和无符号1字节,2字节,4字节所能表示的整数范围
- 能被15整除的最大整数
- 能被15整除的最大整数
- java 用float和double指数记数法所能表示的最大和最小的数字
- JS中定义的function所传整型参数最大能有多大?
- C++ 整型所能表示的数据范围
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- 逆转一个整数的二进制表示问题
- Decode String
- 线程同步 synchronized关键字使用
- accounting assistant
- nullptr关键字
- hdu5692 Snacks(线段树+dfs序)
- js所能表示的最大整数的问题
- spark自定义累加器
- ODBC
- HTML中的标签系列-03-DIV标签&CSS
- HTTP与HTTPS的区别
- 第三周第一课
- 【计蒜客】X的平方根
- LeetCode 算法习题 第四周
- 转载:数据库相关中间件