数値の比較演算子 2014/07/10
==
, !=
で等値性を判定でき、<
, <=
, >
, >=
で大小を比較できる言語が多い。
また、RubyやPerlには <=>
という演算子がある。大小関係により -1
か 0
か 1
を返す。
Go言語 (golang) 2015/02/21
整数同士や浮動小数点数同士は ==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
整数と浮動小数点を直接比較することはできず、キャストして型を合わせる必要がある。
Java 2014/10/16
プリミティブ型の数値は ==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
プリミティブ型以外の数値のオブジェクトの比較は専用のメソッドを使う。
Signature:
// java.lang.Integer
int compareTo(Integer another)
// java.lang.Double
int compareTo(Double another)
Scala 2014/10/16
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
Javaと違い、プリミティブ型というのがなくすべてオブジェクトであるが、数値を表すオブジェクトはだいたい上記の演算子が使えるようになってるので、
compareTo
のようなメソッドを使うことはない。
すべてがオブジェクトであるので、
<
, <=
, >
, >=
に関しては厳密には演算子ではなく
<
などの名前のメソッドが数値のオブジェクトに存在することになっている。従って a < b
は a.<(b)
とも書ける。読みづらいのでこんな書き方は普通はしないが。
<
などの記号にかぎらず、普通の名前のメソッドであっても、引数が1つだけの場合はメソッド呼び出し時にドットと括弧を省略して演算子のように書ける。これを中置記法という。中置記法だと左右が対等に見えるので、自分はリストに対するzip
メソッドだとかは、よくこの書き方をする。
JVM上でプリミティブ型にならないオブジェクトに対しての ==
, !=
は実際には equals
メソッドが呼び出されている。
Groovy 2014/11/21
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
<=>
という、-1
, 0
, +1
のいずれかを返す演算子もある。
a <=> b
と書くと、 a
の方が小さければ、-1
を返し、大きければ 1
を返し、等しければ 0
を返す。
RubyやPerlにも同様のものがある。
PHP 2015/12/16
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
!=
の代わりに <>
と書いても同じ。
===
は等値でかつ同じ型(文字列と数値ではなく、数値同士など)の場合にのみtrue
となる。
!==
は等値でないか、または違う型(文字列と数値など)の場合にtrue
となる。
<
, <=
, >
, >=
は片方または両方を文字列にした場合に、それを数値に変換してから比較する。文字列通しを文字列として比較するにはstrcmp
関数を使う。
var_export(200 < 23 ); echo "\n"; // => false
var_export(200 < '23'); echo "\n"; // => false
var_export('200' < 23 ); echo "\n"; // => false
var_export('200' < '23'); echo "\n"; // => false
var_export(200 > 23 ); echo "\n"; // => true
var_export(200 > '23'); echo "\n"; // => true
var_export('200' > 23 ); echo "\n"; // => true
var_export('200' > '23'); echo "\n"; // => true
// 数字にできない文字列は 0 に変換されてから比較
var_export(200 > 'a' ); echo "\n"; // => true
var_export(200 < 'a' ); echo "\n"; // => false
PHP7からはRubyやPerlなどにある <=>
という演算子が使えるようになった。
-1
, 0
, 1
のいずれかを返す。
var_export(200 <=> 23); echo "\n"; // => 1
var_export(23 <=> 200); echo "\n"; // => -1
var_export(200 <=> '23'); echo "\n"; // => 1
var_export('200' <=> 23); echo "\n"; // => 1
var_export('200' <=> '23'); echo "\n"; // => 1
var_export(200 <=> 200); echo "\n"; // => 0
var_export('200' <=> 200); echo "\n"; // => 0
var_export('200' <=> '200'); echo "\n"; // => 0
よくわからないがPHPでは <=>
のことを宇宙船というらしい。
比較演算子 | PHP Manual
http://php.net/manual/ja/language.operators.comparison.php
Python 2014/07/31
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
Python2では !=
の代わりに <>
と書いても同じだが、これは古い書き方で、
Python3では <>
を使えない。
a < b < c
というような書き方ができ、a < b and b < c
の意味になる。
a < b > c
という書き方も文法上はできて、a < b and b > c
の意味になるが、わかりづらいだけである。
<
, <=
, >
, >=
を文字列やリストなどのシーケンス型に使うと、各要素同士を比較して、辞書的に比較をする。ディクショナリ同士も比較できる。
比較演算子 | Python 2.7 documentation
http://docs.python.jp/2/reference/expressions.html#comparison
比較演算子 | Python 3 documentation
http://docs.python.jp/3/reference/expressions.html#not-in
Ruby 2014/07/10
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
<=>
という、-1
, 0
, +1
のいずれかを返す演算子もある。
a <=> b
と書くと、 a
の方が小さければ、-1
を返し、大きければ 1
を返し、等しければ 0
を返す。
Perlにも同様のものがある。
Perl 2014/10/16
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。
<=>
という、-1
, 0
, +1
のいずれかを返す演算子もある。
a <=> b
と書くと、 a
の方が小さければ、-1
を返し、大きければ 1
を返し、等しければ 0
を返す。Rubyにも同様のものがある。
数値ではなく文字列として比較したい場合は eq
, ne
, gt
, ge
, lt
, le
を使う。
<=>
に対応する文字列としての比較演算子は cmp
である。
sh (シェルスクリプト) 2014/10/16
test
コマンド([
コマンド)の -eq
, -ne
, -lt
, -le
, -ge
, -gt
で数値として比較する。
test
コマンド([
コマンド)の =
, !=
演算子は文字列として比較してしまい、Perlとは逆。
<
, >
はシェルスクリプトではリダイレクトになってしまう。
例
if [ $a -lt $b ]; then
# $a が $b よりも小さい場合
...
fi
-> シェルスクリプトの演算子
JavaScript 2013/09/17
==
, !=
で等値性を判定でき、
<
, <=
, >
, >=
で大小を比較できる。