标签: comparison-operators

9
推荐指数
2
解决办法
8785
查看次数

Perl中<=>(小于,等于,大于)的含义?

这个答案中,我看到了语法<=>; 这是什么意思?它似乎是基于上下文的某种比较,但这就是我所能收集到的.部分背景:

sub rev_by_date { $b->[9] <=> $a->[9] }
my @sorted_files = sort rev_by_date @files;
Run Code Online (Sandbox Code Playgroud)

perl comparison operators comparison-operators

9
推荐指数
1
解决办法
7124
查看次数

MySQL比较运算符,空格

如果数据库行是这样的:country = 'usa'我查询"select * from data where country = 'usa '"它也返回此行.所以它不完全匹配.

为什么MySQL会这样做?而在其他情况下,当它不是真的时,它也将返回TRUE?

mysql comparison-operators

9
推荐指数
2
解决办法
3726
查看次数

如何在JSON中用AND,OR稳健地描述条件表达式?

说我有一个表达式:

( A >= 10 && B == 20 ) || ( C < 30 ) || ( D != 50 )
Run Code Online (Sandbox Code Playgroud)

我可以建议以下JSON来存储/表示这个表达式:

{ "filter": 
    [
        { "var":"A", "condition":"ge", "num":10 },
        { "var":"B", "condition":"e", "num":20 }
    ],
    [
        { "var":"C", "condition":"lt", "num":30 }
    ],
    [
        { "var":"D", "condition":"ne", "num":50 }
    ]
}
Run Code Online (Sandbox Code Playgroud)

其中"filter"映射到子数组的数组.每个子阵列中的所有元素都与AND相关联,而所有子阵列都与OR相关联.

在编写像这样的JSON时,有什么我忽略的吗?

json expression logical-operators comparison-operators

9
推荐指数
1
解决办法
4399
查看次数

为什么要使用三向比较运算符 (&lt;=&gt;) 而不是双向比较运算符?这有优势吗?

#include <compare>
#include <iostream>

int main()
{ 
   auto comp1 = 1.1 <=> 2.2;
   auto comp2 = -1 <=> 1;
   std::cout << typeid(comp1).name()<<"\n"<<typeid(comp2).name();
}
Run Code Online (Sandbox Code Playgroud)

输出:

结构 std::partial_ordering
结构 std::strong_ordering

我知道如果操作数具有整数类型,则运算符将返回一个 prvalue 类型std::strong_ordering。我也知道操作数是否有浮点类型,运算符会产生类型的纯右值std::partial_ordering

但是为什么我应该使用三向比较运算符而不是双向运算符(==, !=, <, <=, >, >=)?这对我有什么好处吗?

c++ comparison-operators spaceship-operator c++20

9
推荐指数
4
解决办法
443
查看次数

如果我在 Python 中调用 `None == x` ,“幕后”会发生什么?

我正在学习和使用 Python,我想出了以下测试代码(请注意,我不会编写这样的高效代码,但在学习新语言时,我喜欢尝试该语言的极端情况):

a = None    
print(None == a) # I expected True, I got True

b = 1
print(None == b) # I expected False, I got False

class MyNone:
    # Called if I compare some myMyNone == somethingElse
    def __eq__(self, __o: object) -> bool:
        return True

c = MyNone()
print (None == c) # !!! I expected False, I got True !!!
Run Code Online (Sandbox Code Playgroud)

请参阅代码示例的最后一行。

None == something明明不存在的东西怎么会None返回True呢?我本希望得到这样的结果something == None,但不是None == …

python equality comparison-operators python-3.x nonetype

9
推荐指数
2
解决办法
319
查看次数

自定义类排序:没有抛出错误,什么是Python测试?

如果没有指定对象的相等比较属性,Python在使用>和时仍然会做一些事情<.如果你没有指定__gt__或者实际比较这些对象的Python是什么__lt__?我希望这里有一个不受支持的操作数错误,就像你在尝试将两个对象一起添加而没有defing时所得到的那样__add__.


In [1]: class MyObject(object):
   ...:     pass
   ...: 
In [2]: class YourObject(object):
   ...:     pass
   ...: 
In [3]: me = MyObject()
In [4]: you = YourObject()
In [5]: me > you
Out[5]: False
In [6]: you > me
Out[6]: True

python object python-2.x comparison-operators

8
推荐指数
1
解决办法
203
查看次数

为什么在"YYYY-MM-DD"的日期格式中,两个字符串的PHP中的比较小于或者多于比较,即使它们是字符串?

我正在为一个项目的PHP代码部分工作,该项目将YYYY-MM-DD格式的日期与当前日期进行比较,以查看它是否小于当前日期.在代码的不同点,使用两种不同的方法进行这种比较.第一个用于get_timestamp()日期并运行时间戳的比较.在另一个地方,它只是将日期的字符串与输出进行比较date("Y-m-d").我的期望是两个日期字符串的比较不会提供正确的答案.但是,当我设置几个测试用例时,我得到了预期的输出.我回顾了PHP手册的两个部分以获得洞察力,但我仍然感到困惑的是,为什么比较无需转换为时间戳.

PHP手册的比较运算符部分指出,字符串要么被转换为数字,要么进行数字比较,或者它产生称为词法比较的东西.我在词法比较中找不到任何进一步的东西,但是当我读到关于字符串转换为数字并尝试使用日期字符串的示例时,我尝试了每个日期字符串的相同数字输出.

有人可以帮助我理解为什么两个日期字符串的比较大于或小于两个日期字符串(或者至少看起来有效)?我错过了什么?

作为后续工作,如果确实有效,我假设将日期转换为时间戳并根据时间戳进行比较是一种更好的做法.哪个是用于将日期转换为时间戳的更好功能:get_timestamp()strtotime()

示例代码小于/大于两个YYYY-MM-DD字符串的比较:

if ("2013-06-27" < "2013-06-28") { echo "less"; } // Output: less
if ("2013-06-27" > "2013-06-28") { echo "more"; } // Output: (none)

if ("2013-06-29" < "2013-06-28") { echo "less"; } // Output: (none)
if ("2013-06-29" > "2013-06-28") { echo "more"; } // Output: more
Run Code Online (Sandbox Code Playgroud)

示例代码测试转换后的YYYY-MM-DD字符串的数值

$foo = 1 + "2013-06-27";
echo "\$foo==$foo"; // Output: $foo = 2014
$foo = 1 + "2013-06-28";
echo …
Run Code Online (Sandbox Code Playgroud)

php date string-comparison comparison-operators

8
推荐指数
1
解决办法
3205
查看次数

在 Javascript 中比较大数字

我有两个要比较的数字。以下示例中的数字是26^26在两个不同系统中计算的结果。其中之一是我的 JavaScript 代码。

然而,当比较这两个数字时,我最终得到这样的结果:

AssertionError [ERR_ASSERTION]: 4.0329146112660565e+26 == 4.0329146112661e+26
Run Code Online (Sandbox Code Playgroud)

它们显然不相等,但理论上它们应该相等。

在javascript中对大数执行相等的正确方法是什么(即使它是近似值)?

javascript math int comparison-operators

8
推荐指数
1
解决办法
2万
查看次数

JavaScript 中 `value &gt;= value` 的作用是什么?

以下是d3.min源代码中的条件语句之一。
这是检查什么?:

value >= value
Run Code Online (Sandbox Code Playgroud)

这是完整的源代码:

export default function min(values, valueof) {
  let min;
  if (valueof === undefined) {
    for (const value of values) {
      if (value != null
          && (min > value || (min === undefined && value >= value))) {
        min = value;
      }
    }
  } else {
    let index = -1;
    for (let value of values) {
      if ((value = valueof(value, ++index, values)) != null
          && (min > value || (min === undefined && value >= …
Run Code Online (Sandbox Code Playgroud)

javascript idioms comparison-operators conditional-statements d3.js

8
推荐指数
1
解决办法
455
查看次数