数値のデータ型
Go言語 (golang) 2015/09/23
数値の型は以下がある。
uint8
- 1バイトの符号なし整数。
byte
uint8
のエイリアス。uint16
- 2バイトの符号なし整数。
uint32
- 4バイトの符号なし整数。
uint64
- 8バイトの符号なし整数。
uint
- 実装によって4バイトまたは8バイトとなりうる符号なし整数。
int8
- 1バイトの符号付き整数。
int16
- 2バイトの符号付き整数。
int32
- 4バイトの符号付き整数。
rune
int32
のエイリアス。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の符号付き整数にしてから演算し、再び浮動小数点数に変換している。