比较双值

我有一个双倍的值,我动态得到,值为0.94289988675,我得到另一个双倍的值为0.94289988777.我只需要比较这两个值。 但它说它们不一样。 我如何比较这些值的前四位数。

代码

for (z = 0; z < something.Count(); z++) { if (largest == Math.Round(0.94289988675 [z],4)) { //proceed } } 

最大= 0.94289988675 0.94289988675 [z]来0.94289988777。 z是。

它不会进入循环。 请帮帮我。

我如何比较前四位

我假设你的意思是4位数,而不是4位。

只需取差异的绝对值:

 if (Math.Abs(largest - 0.94289988675) < 0.0001) { //proceed } 

对于浮点类型,平等是一个相当困难的概念,从不使用简单的==

您永远不会测试浮点值是否相等。 永远。 在任何编程语言中。 处理此问题的最常见方法是从另一个中减去一个,并将此差异与通常称为Epsilon的少数差异进行比较。 在您的情况下,前四位数的0.001可能是合适的。 如果两个数字的差异小于Epsilon值,则认为它们相等。

 double x = ?; double y = ?; double epsilon = 0.001; var difference = Math.Abs(x - y); var isEqual = difference < espilon; 

请注意,您不应该使用常量Double.Epsilon 。 这只是糟糕的命名,它是完全不相关的东西。