【ULP】什么是ULP

在IEEE754标准的32位浮点数表示中,0.1不能精确表示,导致最接近的两个值A和B分别为0.0999999940和0.1000000015。计算机可能选择A或B近似0.1,从而产生0.8ulps或0.2ulps的误差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:对于给定的浮点格式,特定实数值的 ulp 是与此实数值左右最近的两个浮点数的距离。

以IEEE754标准的32位浮点数为例。如果想表示实数值 0.1 是无法准确表示的,只能用最接近 0.1 的可以精确表示的浮点数来表示。这样的数有两个,设为A、B,它们的十六进制和十进制表示分别为:

A:
十六进制:0x3dcccccc
十进制:0.099999994039536

B:
十六进制:0x3dcccccd
十进制:0.10000000149012

那么 0.1 的 ulp 就等于 |A - B| = 0.00000000745076
如果计算机 1 使用向下近似的方法用 A 来表示 0.1
那么误差ulps = 0.1 - 0.099999994039536 = 0.000000005960464 = (0.000000005960464 / 0.00000000745076) ≈ 0.8

如果计算机 2 使用向上近似的方法用 B 来表示 0.1
那么误差ulps = 0.10000000149012 - 0.1 = 0.00000000149012 = (0.00000000149012 / 0.00000000745076) ≈ 0.2

由上述计算可知,在 IEEE754 标准的 32 位浮点数的前提下,计算机 1 关于 0.1 的计算误差为 0.8 ulps,计算机 2 关于 0.1 的计算误差为 0.2 ulps。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米码收割机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值