Questions tagged «comparison»

有关数据比较和完成数据的有效方法的问题。请避免将此标签用于两个问题或概念的一般(元)比较。

12
对于IEEE754 NaN值,所有比较返回false的理由是什么?
为什么NaN值的比较与所有其他值都不同?也就是说,与一个或两个值均为NaN的运算符==,<=,> =,<,>进行的所有比较均返回false,这与所有其他值的行为相反。 我想这以某种方式简化了数值计算,但是我找不到明确陈述的理由,甚至在Kahan撰写的关于IEEE 754状态的讲义中也没有详细讨论其他设计决策。 在进行简单的数据处理时,这种异常行为会引起麻烦。例如,当在C程序中对带有某些实值字段的记录列表进行排序时,我需要编写额外的代码以将NaN作为最大元素来处理,否则排序算法可能会变得混乱。 编辑: 到目前为止,所有答案都表明,比较NaN毫无意义。 我同意,但这并不意味着正确答案是错误的,而是一个非布尔值(NaB),幸运的是不存在。 因此,在我看来,选择比较返回真还是假是任意的,并且对于一般数据处理,如果遵循通常的规律(反射性为==,三分法为<,==,>),则最好避免数据结构,这将是有利的依靠这些法律变得混乱。 因此,我要求打破这些法律的某些具体优势,而不仅仅是哲学推理。 编辑2: 我想我现在明白为什么将NaN设为最大值会是个坏主意,它将使上限计算变得混乱。 NaN!= NaN可能需要避免检测诸如 while (x != oldX) { oldX = x; x = better_approximation(x); } 但是最好通过比较绝对差和较小的限制来写出。因此恕我直言,这对于打破NaN的反射率是一个相对较弱的论点。

11
C#中字符串比较方法的差异
在C#中比较字符串非常简单。实际上,有几种方法可以做到这一点。我在下面的方框中列出了一些。我很好奇的是它们之间的区别以及何时应该使用它们之间的区别?应该不惜一切代价避免一个吗?我还没有列出更多吗? string testString = "Test"; string anotherString = "Another"; if (testString.CompareTo(anotherString) == 0) {} if (testString.Equals(anotherString)) {} if (testString == anotherString) {} (注意:我在此示例中寻求的是平等,不小于或大于但也可以对此发表评论)
261 c#  string  comparison 

13
测试两个整数范围是否重叠的最有效方法是什么?
给定两个包含整数的范围[x1:x2]和[y1:y2],其中x1≤x2且y1≤y2,测试这两个范围是否存在重叠的最有效方法是什么? 一个简单的实现如下: bool testOverlap(int x1, int x2, int y1, int y2) { return (x1 >= y1 && x1 <= y2) || (x2 >= y1 && x2 <= y2) || (y1 >= x1 && y1 <= x2) || (y2 >= x1 && y2 <= x2); } 但我希望有更有效的方法来进行计算。 就最少的操作而言,哪种方法是最有效的。

25
比较两个字典并检查多少对(键,值)相等
我有两个字典,为简单起见,我将采用以下两个: >>> x = dict(a=1, b=2) >>> y = dict(a=2, b=2) 现在,我想比较中的每一key, value对是否x具有相同的对应值y。所以我这样写: >>> for x_values, y_values in zip(x.iteritems(), y.iteritems()): if x_values == y_values: print 'Ok', x_values, y_values else: print 'Not', x_values, y_values 而且它有效,因为tuple返回了a ,然后比较了相等性。 我的问题: 这样对吗?有更好的方法吗?最好不要提速,我是在讲代码优雅。 更新:我忘了提到我必须检查多少key, value对是相等的。

11
如何检查Perl数组是否包含特定值?
我试图找出一种方法,无需遍历数组就可以检查数组中是否存在值。 我正在读取文件中的参数。我有一长串我不想处理的参数。我将这些不需要的参数放在数组中@badparams。 我想读取一个新参数,如果不存在@badparams,请对其进行处理。如果确实存在@badparams,请转到下一个阅读。
239 perl  arrays  comparison 

10
大于/小于的切换语句
所以我想使用这样的switch语句: switch (scrollLeft) { case (<1000): //do stuff break; case (>1000 && <2000): //do stuff break; } 现在我知道,这些语句(<1000)或(>1000 && <2000)都不起作用(显然是由于不同的原因)。我要问的是最有效的方法。我讨厌使用30条if语句,所以我宁愿使用switch语法。有什么我可以做的吗?


14
比较Java中2个XML文档的最佳方法
我正在尝试编写一个应用程序的自动化测试,该测试基本上将自定义消息格式转换为XML消息并将其发送到另一端。我有一组很好的输入/输出消息对,所以我要做的就是发送输入消息并侦听另一端的XML消息。 当需要将实际输出与预期输出进行比较时,我遇到了一些问题。我的第一个想法只是对预期消息和实际消息进行字符串比较。这不能很好地工作,因为我们拥有的示例数据并不总是保持一致的格式,并且常常为XML名称空间使用不同的别名(有时根本不使用名称空间)。 我知道我可以解析两个字符串,然后遍历每个元素,然后自己比较它们,这并不是很难做到的,但是我感觉有一种更好的方法或可以利用的库。 因此,归根结底,问题是: 给定两个都包含有效XML的Java字符串,您将如何确定它们在语义上是否等效?如果您有办法确定差异是多少,您将获得加分。

5
为什么与Integer.valueOf(String)进行==比较会得出127和128的不同结果?
我不知道为什么这些代码行返回不同的值: System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.println(Integer.valueOf("128")==Integer.valueOf("128")); System.out.println(Integer.parseInt("128")==Integer.valueOf("128")); 输出为: true false true 为什么第一个返回true,第二个返回false?有什么不同,我不知道之间127和128?(我当然知道127< 128。) 另外,为什么第三个返回true? 我已经阅读了这个问题的答案,但是我仍然没有知道它如何返回true,以及为什么第二行中的代码返回false。
182 java  integer  comparison 


4
元组比较在Python中如何工作?
我一直在阅读Core Python编程书,作者展示了一个类似的示例: (4, 5) < (3, 5) # Equals false 所以,我想知道为什么/为什么等于假?python如何比较这两个元组? 顺便说一句,这本书没有解释。



5
“!==”和“ ==!”之间的区别 [关闭]
这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 昨天,当我修改别人编写的PHP代码时,偶然发现了这个问题。我很困惑,一个简单的比较(if ($var ==! " "))未能按预期工作。经过一些测试,我意识到编写该代码的人将使用它==!而不是!==用作比较运算符。我从没看过==!任何语言,所以我想知道这段代码怎么能工作并进行了一些测试: <?php echo "int\n"; echo "1 !== 0: "; var_dump(1 !== 0); echo "1 !== 1: "; var_dump(1 !== 1); echo "1 ==! 0: "; var_dump(1 ==! 0); echo "1 ==! 1: "; var_dump(1 ==! 1); echo "bool\n"; echo "true !== false: "; var_dump(true …

19
比较两个集合是否相等,无论它们中的项顺序如何
我想比较两个集合(在C#中),但是我不确定有效实现这一点的最佳方法。 我已经阅读了有关Enumerable.SequenceEqual的其他主题,但这并不是我想要的。 在我的情况下,如果两个集合都包含相同的项(无论顺序如何),它们将相等。 例: collection1 = {1, 2, 3, 4}; collection2 = {2, 4, 1, 3}; collection1 == collection2; // true 我通常要做的是遍历一个集合的每个项目,看是否在另一个集合中,然后遍历另一个集合的每个项目,看它是否在第一个集合中。(我从比较长度开始)。 if (collection1.Count != collection2.Count) return false; // the collections are not equal foreach (Item item in collection1) { if (!collection2.Contains(item)) return false; // the collections are not equal …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.