提问人:Shaharg 提问时间:5/21/2021 更新时间:11/28/2021 访问量:108
比较可能无限的双精度数
Comparing double-precision numbers that are potentially infinite
问:
我有两个双精度变量,它们可能等于无穷大。我想对它们进行比较,并允许有一定的误差。由于我使用的环境,我无法使用 assertEquals。
我试过了
assert Math.abs(a-b)<DELTA;
但是,如果 a 和 b 都是无穷大,则返回 false。有没有一种捷径可以在不对 Infinity 情况进行明确检查的情况下检查相等性?
答:
0赞
M. Justin
11/28/2021
#1
没有内置的解决方案。最简单的解决方案是进行一次检查,包括无穷大相等性检查,另一次检查处理增量比较。以下是处理正无穷大和负无穷大的最简单方法:
assert a == b || Math.abs(a-b) < DELTA;
评论
0赞
M. Justin
11/28/2021
解决方案由 @user207421 的评论提供。
评论
assertEquals
assert a == b || Math.abs(a-b) < DELTA;
Double