MST

星途 面试题库

面试题:JavaScript中算术操作符边界条件之数值溢出

在JavaScript中,如果对一个极大的数值(接近`Number.MAX_SAFE_INTEGER`)进行加法操作,会发生什么情况?请编写代码演示,并解释结果。
24.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 代码演示
let num1 = Number.MAX_SAFE_INTEGER;
let num2 = 1;
let result = num1 + num2;
console.log(result); 
  1. 解释
    • 在JavaScript中,Number.MAX_SAFE_INTEGER表示可以安全进行整数运算的最大数。它的值是9007199254740991
    • 当对一个接近Number.MAX_SAFE_INTEGER的极大数值进行加法操作时,如果超过了安全整数范围,结果可能会失去精度。在上述代码中,num1Number.MAX_SAFE_INTEGERnum2为1,相加后理论上应该是9007199254740992,但由于超出了安全整数范围,JavaScript会以浮点数的形式来表示这个结果,导致结果为9007199254740992(在这个特定情况下,结果看似正确,但如果进行更复杂的运算,精度问题可能会更明显)。这是因为JavaScript使用IEEE 754双精度浮点数格式来表示数字,对于极大或极小的数值,这种格式在表示整数时存在精度限制。