这是由语言定义的吗?是否有规定的最大值?在不同的浏览器中是否有所不同?
JavaScript有两种数字类型:Number
和BigInt
最常用的数字类型Number
为64位浮点IEE 754数字。
该类型的最大精确整数值为Number.MAX_SAFE_INTEGER
,即:
从一个角度来看:一个4千万个字节是PB(或一千TB)。
在本文中,“安全”是指能够准确表示整数并正确比较它们的能力。
从规格:
请注意,所有大小不大于2 53的正整数和负整数都可以在
Number
类型中表示(实际上,整数0具有+0和-0两种表示形式)。
为了安全地使用大于此值的整数,您需要使用BigInt
,没有上限。
请注意,按位运算符和移位运算符对32位整数进行运算,因此在这种情况下,最大安全整数为2 31 -1或2147483647。
const log = console.log
var x = 9007199254740992
var y = -x
log(x == x + 1) // true !
log(y == y - 1) // also true !
// Arithmetic operators work, but bitwise/shifts only operate on int32:
log(x / 2) // 4503599627370496
log(x >> 1) // 0
log(x | 1) // 1
关于编号为9007199254740992的主题的技术说明:该值有一个精确的IEEE-754表示形式,您可以从变量中分配和读取该值,因此对于在小于或等于整数的整数域中进行
非常仔细 选择的应用程序此值,您可以将其视为最大值。
在一般情况下,您必须将此IEEE-754值视为不精确,因为它是对逻辑值9007199254740992还是9007199254740993进行编码都是模棱两可的。
问题内容: 我正在尝试编写一个从用户读取5个整数并返回最高和最低值的类。这必须使用循环来完成,而不能使用数组和Integer.MIN.Value / Integer.MAX.Value。我已经成功编写了从用户那里获取5个整数并返回最大值的代码,但是我无法同时获取同一类中返回的最大值和最小值。 这是我上面提到的代码: 问题答案: 干得好 :)
问题内容: 尝试如下 输出:12.0 但我想获得12.00的精度 请让我知道正确的方法,而不在字符串类中使用format()方法 问题答案: 使用而不是双重: 之所以有效,是因为保持了“精度”,构造函数将其设置为从右边的数字开始,并在中使用它。因此,如果仅将其丢弃,它就会打印出来。
我的意思是,例如,我用IEEE-754单精度编码了以下数字: 上面的二进制数存储在文本字符串中。 问题是,如何在不丢失精度的情况下将这个字符串转换为IEEE-754双精度表示(有点像下面的,但值不同)? 这是用IEEE-754双精度编码的< del >相同的数。 我已经尝试使用下面的算法将第一个字符串先转换回十进制数,但它失去了精度。 我在Windows平台上使用Qt C框架。 编辑:我必须道歉,
问题内容: 我的代码是 编译时出现以下错误 但是,当我使用它代替它成功编译时,那么我的问题是,当所有3个变量(即a,b和c)都是字节数据类型时,为什么需要强制转换? 问题答案: ,此处的运算符将返回,这就是您需要使用强制转换的原因。
编辑:在评论中进行了一些讨论后,发现由于幸运地了解了浮点数是如何在C中实现的,我问了一些与我想问的不同的东西。 我想使用比更大的整数(对我来说是8个字节)(对我来说是8个字节),可能不会重复出现在数组或bigint库中。由于我的是16个字节,我认为只需切换类型就可以了。结果表明,即使可以表示更大的整数,你也不能在不失去精度的情况下进行操作——用这些更大的整数。所以不可能实现我想做的事情。实际上,正
给定一定数量的节点,是否有公式计算AVL树的最大和最小高度? 例如: 教科书中的问题: 一棵包含3个节点、5个节点和7个节点的AVL树的最大/最小高度是多少<教科书式答案: 3个节点的AVL树的最大/最小高度为2/2,5个节点为3/3,7个节点为4/3 我不知道他们是否通过一些神奇的公式计算出来,或者他们是否画出了每个给定高度的AVL树并以这种方式确定。