Go 言語は 2 つの精度の浮動小数点数 float32 および float64 を提供しており、それらの算術仕様は、最新のすべての CPU でサポートされている浮動小数点数国際標準 IEEE754 によって定義されています。
これらの浮動小数点型の値は、非常に小さいものから非常に大きいものまでさまざまです。浮動小数点値の範囲の制限は、数学パッケージで確認できます。
- 定数 math.MaxFloat32 は、float32 が取り得る最大値 (約 3.4e38) を表します。
- 定数 math.MaxFloat64 は、float64 が取り得る最大値、つまり約 1.8e308 を表します。
- float32 と float64 が表現できる最小値は、それぞれ 1.4e-45 と 4.9e-324 です。
float32 型の浮動小数点数は、10 進数で約 6 桁の精度を提供できますが、float64 では、10 進数で約 15 桁の精度を提供できます。float32 型の累積計算誤差は次のとおりであるため、一般に、float64 型を最初に使用する必要があります。拡散が容易で、float32 は正確に表現できる正の整数はそれほど大きくありません。
var f float32 = 16777216 // 1 << 24
fmt.Println(f == f+1) // "true"!
浮動小数点数は、次のように宣言するときに整数部分または小数部分のみを書き込むことができます。
const e = .71828 // 0.71828
const f = 1. // 1
非常に小さい数値または非常に大きい数値は、指数を e または E で指定して科学表記法で記述するのが最適です。
定数(コードの抜粋)を日本語に翻訳します。
const Avogadro = 6.02214129e23 // 阿伏伽徳定数
const Planck = 6.62606957e-34 // プランク定数
Printf 関数を使用して浮動小数点数を出力する場合、「%f」を使用して小数点以下の桁数を制御できます。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Printf("%f\n", math.Pi)
fmt.Printf("%.2f\n", math.Pi)
}
実行結果は次のとおりです。
3.141593
3.14
「 Go言語浮動小数点型(10進数型)」についてわかりやすく解説!絶対に観るべきベスト2動画
浮動小数点数とは
基本情報技術者試験/n進数の小数表現(2進小数)