• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

使用浮点数和小数中的技巧和陷阱

发布: 2008-9-09 09:05 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 90次 | 进入领测软件测试网论坛讨论

领测软件测试网 软件测试技术门户E x'Gw8C0Za

/e_T^D;l:M Qr&V表 2. 无效的浮点假定软件测试技术门户g FBc3n'E)\2P5|

7Y a#|?:q这个表达式…… 不一定等于…… 当……
G XX S k/l|2v0.0 - f -f f 为 0软件测试技术门户 ^G+SO{t
f < g ! (f >= g) f 或 g 为 NaN
TgFUI$nf == f true f 为 NaN软件测试技术门户 Nk5qEq|M }
f + g - g f g 为无穷大或 NaN
软件测试技术门户"g!o+^+`4G#}

软件测试技术门户#_\.gc(f*@ h8PdA\3Un

舍入误差

9a6B(m#Z|K:t f q

Rn4T;w"_ N2iO/r浮点运算很少是精确的。虽然一些数字(譬如 0.5 )可以精确地表示为二进制(底数 2)小数(因为 0.5 等于 2 -1),但其它一些数字(譬如 0.1 )就不能精确的表示。因此,浮点运算可能导致舍入误差,产生的结果接近 — 但不等于 — 您可能希望的结果。例如,下面这个简单的计算将得到 2.600000000000001 ,而不是 2.6 :

$xPPLe:]8mff

wK:lI7PqF6Tdouble s=0;软件测试技术门户T7j6Z/Wr
for (int i=0; i<26; i++)软件测试技术门户$h|6zS7P0x
s += 0.1;软件测试技术门户|1Q