我正在尝试制作一个自适应的“大约相等”方法(用 C# 编写,但问题很笼统)接受两个双精度数并返回一个布尔值,如果它们“大约相等”或不“大约相等”。通过自适应,我的意思是:
1.234 和 1.235 ==> 真
但
1.234567 和 1.234599 ==> 错误
也就是说,“大约相等”的精度适应数字的精度。
我在如何找到两个变量是否近似相等?但是对于 epsilon 使用什么仍然存在开放式问题。
有人知道此类问题的最佳实践吗?提前致谢!
编辑:我最初的问题没有包含足够的信息来说明我想要得到什么。很抱歉,我很抱歉。我想要一个程序,它可以将更高的精度数字处理为更高的标准,同时对更低的精度数字更宽容。对的更多示例是(其中 '(0)' 是隐含的零):
1.077 和 1.07(0) 返回 false(因为 77 与 70 非常不同)
1.000077 和 1.00007(0) 返回 false(因为 77 与 70 非常不同)
1.071 和 1.07(0) 返回 true(因为 71 接近 70
1.000071 和 1.00007(0) 返回 true(因为 71 接近 70)
无论实现代码如何,我都假设会有某种“公差”变量来确定什么是“非常不同”和什么是“接近”。