gpt4 book ai didi

c++ - 双重比较(再次)

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:41 25 4
gpt4 key购买 nike

我有一个完全准确的“黄金源”算法,即输出准确到 double 。

我想比较另一种算法并确定它是否也精确到 double 。

例如,可能会输出以下三个数字:

A = 8.5534733167898555463e-05
X = 8.5534733167898640989e-05
Y = 8.553473316788089652e-05
sig:1 23456789012345

A是金源。我可以看到 A 和 X 等于 15 个有效数字,而 Y 在第 13 个有效数字上不同。因此,Y 不等于其他 double ,而 A 和 X 可能等于 double 。

我看到了 this question ,但不确定如何应用它。如果我使用 n=1,它表示 X 相等,而 Y 不相等,这似乎合理但正确吗?我希望它能在 n=0 的情况下工作,但这表明 X 和 Y 都不相等(也许这是正确的)。

最佳答案

double 以尾数和指数形式在内部存储。相等检查 double float 是没有用的,因为它们可能非常接近,甚至不完全相同。因此,您需要定义一个阈值。例如,您将 epsilon 定义为 0.000000001 左右(精度取决于您的精度公差)。然后,如果 a、b 是两个 double ,则检查 abs(a-b) < epsilon 是否接受为相等或几乎接近相等。

关于c++ - 双重比较(再次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com