数値のデータ型
Go言語 (golang) 2015/09/23
数値の型は以下がある。
uint8- 1バイトの符号なし整数。
byteuint8のエイリアス。uint16- 2バイトの符号なし整数。
uint32- 4バイトの符号なし整数。
uint64- 8バイトの符号なし整数。
uint- 実装によって4バイトまたは8バイトとなりうる符号なし整数。
int8- 1バイトの符号付き整数。
int16- 2バイトの符号付き整数。
int32- 4バイトの符号付き整数。
runeint32のエイリアス。int64- 8バイトの符号付き整数。
int- 実装によって4バイトまたは8バイトとなりうる符号付き整数。
float32- IEEE 754 の32ビット単精度の浮動小数点数。
float64- IEEE 754 の64ビット単精度の浮動小数点数。
complex64- 2つの
float32で表される複素数。 complex128- 2つの
float64で表される複素数。
Java 2016/02/16
数値となるプリミティブ型には、
char, byte, short, int, long, float, double があり、それぞれに対応するオブジェクトのクラスもある。対応するクラスというのは、プリミティブ型とは別の型で、プリミティブ型をオブジェクトにラップしているクラスであり、プリミティブ型と対応するクラスはboxing/unboxingによて相互に変換できる。
char- 1バイトの符号なし整数。文字の表現に使われる。対応するクラスは
java.lang.Character byte- 1バイトの符号付き整数。対応するクラスは
java.lang.Byte short- 2バイトの符号付き整数。対応するクラスは
java.lang.Short int- 4バイトの符号付き整数。対応するクラスは
java.lang.Integer long- 8バイトの符号付き整数。対応するクラスは
java.lang.Long float- IEEE 754 の32ビット単精度の浮動小数点数。対応するクラスは
java.lang.Float double- IEEE 754 の64ビット倍精度の浮動小数点数。対応するクラスは
java.lang.Double
Javaのプリミティブ型としては上記の他に boolean がある。
C言語のunsignedに相当する符号なしの整数型はない。
-> 数値リテラルの書き方
Scala 2015/02/27
Javaのプリミティブ型それぞれに対応したScalaのクラスがある。名前は先頭を大文字にしただけである。
Javaのjava.lang.Integerとintは別物だが、Scalaのscala.IntはJavaのintと同一視できる。
scala.Char- Javaの
char scala.Short- Javaの
short scala.Int- Javaの
int scala.Long- Javaの
long scala.Float- Javaの
float scala.Double- Javaの
double
Scalaではこれらをプリミティブ型であると意識しないといけないケースは少ない。
コンパイル後のJVM上ではJavaのプリミティブ型に変換されているので、パフォーマンスの心配はしなくてよい。けど、オートボクシングの処理が挟まるケースもある。
scala.Intなどにはメソッドがあるが、JVM上ではプリミティブ型にメソッドがあるわけではない。
PHP 2014/06/28
整数と浮動小数点数のデータ型がある。
整数は符号付きで、32ビットなのか64ビットなのかは、プラットフォームによる。
整数は、10進数表記のほか、
0xまたは0Xで始まる16進数表記、0で始まる8進数表記、
0bまたは0Bで始まる2進数表記を使える。
2進数表記はPHP 5.4.0からなので、5.3以前では使えない。リテラルが整数の範囲を超える場合は自動で浮動小数点数になる。
整数型/浮動小数点数型の区別を動的に行うには、is_int, is_float 関数を使うとよい。
-> 型を動的に判定するには
Python 2015/01/27
Python2では、整数(int)、長整数(long)、浮動小数点数(float)、複素数(complex)の4種類のデータ型がある。
Python3では、整数と長整数の区別がなくなり、整数(int)、浮動小数点数(float)、複素数(complex)の3種類のクラスがある。
Python2の整数は64ビットの処理系であれば、2 ** 63 - 1 で sys.maxint を参照することで調べることができる。この最大値を超える整数は自動で長整数になる。
Python3の整数には上限がない。
Python3で sys.maxint を参照しようとすると SyntaxError になる。
浮動小数点数はC言語でいうdoubleに相当する。
複素数は実部と虚部がそれぞれC言語のdoubleで実装されている。
整数・長整数は、10進数での表記のほか、
0xまたは0Xで始まる16進数表記、0bまたは0Bで始まる2進数表記を使える。
C言語やJavaなどと違って、8進数表記は0oまたは0Oで始める。
Python2ではC言語やJavaなどのように8進数表記として0で始めることもできるが、
Python3ではこれは SyntaxError になる。
Python2で長整数であることを明示するには数字の最後に L を付けるが、付けなくても大きな数字であれば勝手に長整数になる。
Python3で L を付けると SyntaxError になる。
整数と浮動小数点数の混ざった四則演算をするとPython2でもPython3でも結果は浮動小数点数になる。
数値リテラル | Python 2.7 documentation
http://docs.python.jp/2/reference/lexical_analysis.html#numbers
数値リテラル | Python 3 documentation
http://docs.python.jp/3/reference/lexical_analysis.html#numbers
Ruby 2014/06/29
整数は Fixnum と Bignum というクラスがあるが、普段はそれらのスーパークラスである Integer として認識すればよい。小さい整数は Fixnum になり、大きすぎてオーバーフローしてしまう場合は自動で Bignum になる。
a = 3
p a.class
# => Fixnum
p a.class.superclass
# => Integer
p a.class.superclass.superclass
# => Numeric
b = 300000000000000000000000000000000
p b.class
# => Bignum
p b.class.superclass
# => Integer
p b.class.superclass.superclass
# => Numeric
整数リテラルは、10進数での表記のほか、
0で始まる8進数表記、0xまたは0Xで始まる16進数表記、
0bまたは0Bで始まる2進数表記を使える。
C言語やJavaなどと違って、Pythonと同様に、
8進数表記は0oまたは0Oで始めることもできる。
整数は3ケタごとの区切りなどとして途中にアンダースコアを入れることができる。入れる場所はどこでもよく、インタプリタは単に途中のアンダースコアを無視する。ただし、0x などの直後にアンダースコアを置くことはできない。さらなる例外として、なぜか8進数表記は 0_ で始めることもできる。
浮動小数点数は、倍精度で扱える。
f = 3.14
p f.class
# => Float
p f.class.superclass
# => Numeric
それ以外に BigDecimal という金融・関係分野で使える任意精度の浮動小数点数もある。
Ruby 2.1からはrサフィックスを使った有理数(Rational型)や、
iサフィックスを使った複素数(Complex型)を書くこともできる。
Integer/Floatの区別を動的に行うには、メソッド is_a? を使うとよい。
Perl 2014/02/06
数値と文字列はほとんど区別がない。数値が前提の演算子に対しては数値になるし、文字列が前提の演算子に対しては文字列になる。なので、例えばJSONに吐き出すときに、数字のつもりだった部分が文字列として吐き出されてしまうことがあるので注意。
整数と浮動小数点数の区別もない。
ソースコードの中で整数リテラルを書くときに、 3ケタごとの区切りなどとして途中にアンダースコアを入れることができる。入れる場所はどこでもよく、インタプリタ単に途中のアンダースコアを無視する。
sh (シェルスクリプト) 2014/10/27
変数に入れる値やコマンドに渡すパラメータなどはすべて文字列で、数値も文字列で表され、区別がない。
exprコマンドにパラメータで渡せば数値として計算されるかもしれない。
JavaScript 2016/06/12
整数型はなく、すべての数値は64bitの浮動小数点数で表される。したがって、整数が正確に表現できるのは53bit(符号を含めれば54bit)まで。
ビット演算子は、浮動小数点を32bitの符号付き整数にしてから演算し、再び浮動小数点数に変換している。