Golangにおいて小数の型は「float64型」と「float32型」の二つあります。
2つありますが主に使うのは「float64型」と考えても大丈夫でしょう。
変数宣言時のfloat型
明示的な型定義の場合
var 変数名 float64 = 少数の値
暗黙的な型定義の場合
変数名 := 少数の値
では実際に、変数に少数の値を代入して出力などをやってみます。
package main
import "fmt"
func main() {
var test1 float64 = 1.5 //変数test1に1.5を代入(明示的な型定義)
test2 := 4.7 //変数test2に4.7を代入(暗黙的な型定義)
fmt.Println(test1) //変数test1の値を出力
fmt.Println(test2) //変数test2の値を出力
fmt.Printf("%T\n", test1) //変数test1の型を出力
fmt.Printf("%T\n", test2) //変数test2の型を出力
}
出力結果↓
1.5 //test1の値
4.7 //test2の値
float64 //test1の型
float64 //test2の型
型変換(float64型→float32型)
float64型の値をfloat32型に型変換する
package main
import "fmt"
func main() {
var test1 float64 = 1.5 //float64型で変数宣言(明示的な型定義)
fmt.Println(float32(test1)) //型変換後の値
fmt.Printf("%T\n", float32(test1)) //型変換後の型
}
出力結果↓
1.5
float32
見事に型変換成功。
0.0で割った場合の挙動
浮動小数を0.0で割った時の結果が少し特殊なので確認しておきましょう。
package main
import "fmt"
func() {
zero := 0.0
positiveFloat := 1.0 / zero
negativeFloat := -1.0 / zero
nanFloat : = zero / zero
fmt.Println(positiveFloat)
fmt.Println(negativeFloat)
fmt.Println(nanFloat)
}
出力結果↓
+Inf //正の無限大
-Inf //負の無限大
Nan //非数
非数とは、表すことのできない数値データのこと。ちなみに「Not a number」の略。
具体的な使い方はよく分かりませんが、このような結果になるということは頭の片隅に入れておくと良いかもしれません。