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

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


在这个示例

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值