Bootstrap

为什么浮点数运算的时候会有精度丢失的风险?

浮点数运算精度丢失是常见,特别是在使用像JavaScript这样的语言时,因为它使用IEEE 754标准来表示浮点数。例如:

// 浮点数运算精度丢失的示例  
let num1 = 0.1;  
let num2 = 0.2;  
  
// 预期结果是 0.3,但实际上...  
let result = num1 + num2;  
  
console.log(result); // 输出可能是 0.30000000000000004 而不是 0.3  
  
// 进一步展示精度问题  
let num3 = 0.7;  
let num4 = 0.1;  
  
// 预期结果是 0.8,但实际上...  
let anotherResult = num3 - num4;  
  
console.log(anotherResult); // 输出可能是 0.5999999999999999 而不是 0.8  
  
// 另一个例子,展示比较浮点数时的问题  
if (result === 0.3) {  
    console.log("结果是 0.3"); // 这行代码不会执行,因为 result 实际上不等于 0.3  
} else {  
    console.log("结果不是 0.3"); // 这行代码会执行  
}  
  
// 使用误差范围来比较浮点数  
function areFloatsEqual(num1, num2, epsilon = 1e-9) {  
    return Math.abs(num1 - num2) < epsilon;  
}  
  
if (areFloatsEqual(result, 0.3)) {  
    console.log("考虑误差后,结果是 0.3"); // 这行代码会执行  
}


在这个示例

;