比较双值
我有一个双倍的值,我动态得到,值为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
。 这只是糟糕的命名,它是完全不相关的东西。