浮点数运算精度丢失是常见,特别是在使用像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"); // 这行代码会执行
}
在这个示例