Go 速習チュートリアル

Go 言語の浮動小数点型

1. 浮動小数点型とは

フロート(浮動小数点)データ型は、35.3、-2.34、3597.34987のような、小数点を持つ正負の数値を保存するために使用されます。

Goには2種類の浮動小数点型キーワードが用意されています:

型 (Type)サイズ範囲 (Range)
float3232ビット-3.4e+38 〜 3.4e+38
float6464ビット-1.7e+308 〜 +1.7e+308

       Tips: 浮動小数点型のデフォルトは float64 です。型を指定せずにバリアブルを宣言した場合、自動的に float64 として扱われます。

2. float32 キーワード

以下の例では、float32 型のバリアブルを宣言する方法を示しています。

コード例:

package main
import ("fmt")

func main() {
  var x float32 = 123.78
  var y float32 = 3.4e+38
  fmt.Printf("タイプ: %T, バリュー: %v\n", x, x)
  fmt.Printf("タイプ: %T, バリュー: %v", y, y)
}

3. float64 キーワード

float64 データ型は、float32 よりもはるかに広い範囲の数値を保存することができます。

コード例:

package main
import ("fmt")

func main() {
  var x float64 = 1.7e+308
  fmt.Printf("タイプ: %T, バリュー: %v", x, x)
}

4. どちらの型を使うべきか?

どちらの型を選択するかは、そのバリアブルが保存すべき数値の範囲と必要とされる精度に依存します。

エラーになる例:
以下の例では、3.4e+39 という値が float32 の許容範囲を超えているため、エラーが発生します。

package main
import ("fmt")

func main() {
  var x float32 = 3.4e+39
  fmt.Println(x)
}

実行結果:

./prog.go:5:7: constant 3.4e+39 overflows float32

3.4e+39float32オーバーフローさせています、という内容のエラーが表示されます。)