浮動小数点数を扱うDouble・Float型
浮動小数点数を扱うDouble型
小数点を扱う型には、
・単精度浮動小数点数を扱うFloat型(32ビット)
・倍精度浮動小数点数を扱えるDouble型(64ビット) があります。
どちらも符号付きで扱われます。
1 2 3 4 |
var value1_1: Float = 12.34 // 32ビットの範囲で値の保持が可能 var value1_2: Float = -12.34 // 32ビットの範囲で負の値の保持が可能 var value2_1: Double = 123.45 // 64ビットの範囲で値の保持が可能 var value2_2: Double = -123.45 // 64ビットの範囲で負の値の保持が可能 |
単精度、倍精度、というのは扱えるビット数のことで、
32ビット(4バイト)で数を表現する単精度、その倍の64ビット(8バイト)で表現する倍精度、という意味です。基本は表せる範囲の大きいDouble型を使っておけばよいでしょう。
では、小数点のことをなぜ「浮動」小数点と言っているのでしょうか。
それはメモリ内での小数点数の扱い方にあります。
メモリ内で小数点(.)そのものや、どの位置にあるか、などが表せないので特殊な格納の仕方をします。
例として「0.00025」の場合を見てみましょう。
最初に、小数点のすぐ右(小数点第一位)に有効数字がくるように形を変えています。(+0.25×10^-3)
上図のように、+の符号部分と、100000110001部分と、-11部分だけをメモリに格納しています。
0. のところと×2のところは固定(そうなるように他の数字を動かす)として、データを管理しています。
このとき、0.00025→0.25と、小数点がぷかぷかと釣りで使う「浮き」のように動くので、「浮動」小数点と言われています。
浮動小数点数型は小数の値を保持できますが、演算速度は数値型の中でももっとも遅くなります。扱う数値の型を選ぶ際には、浮動小数点数を利用する必要が本当にあるのかをよく検討してから利用するようにしましょう。