【发布时间】:2012-05-02 18:42:13
【问题描述】:
我正在尝试制作一个自适应的“大约相等”方法(用 C# 编写,但问题很笼统)接受两个双精度数并返回一个布尔值,如果它们“大约相等”或不“大约相等”。我所说的自适应是指:
1.234 和 1.235 ==> 正确
但是
1.234567 和 1.234599 ==> 错误
即“大约相等”的精度适应数字的精度。
我在How do I find if two variables are approximately equals? 找到了一个舍入的概念,但对于 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)
不管实现代码如何,我都假设会有某种“公差”变量来确定什么是“非常不同”,什么是“接近”。
【问题讨论】:
-
如何确定数字的精度?
标签: c# equals approximate