こんにちは、@Solphaです。
今回は円の面積を求めるプログラムを書いてみたいと思います。
#概要
- 半径のみ入力
- 円周率は1世代前の学校の授業で使われていた「3.14」を適用
#プログラム
##コード
package main
import "fmt"
func main() {
var radius, circle float32
fmt.Printf("半径を入力してください --> ")
fmt.Scanln(&radius)
// 半径×半径×3,14の結果をcircleに代入
circle = radius * radius * 3.14
fmt.Println(circle)
}
変数radiusとcircleの型がfloat32(浮動小数点型)
になっているのがポイントです。
仮にradiusの型をint
にした場合、実行したら、
cannot use radius * radius * 3.14 (type float32) as type int in assignment
とエラーが出ます。これはcircle求める式において、
radius(int型) * radius(int型) * 3.14(浮動小数値型)
型の違うもの同士を計算しようとしているために起こるエラーなので、radiusを”3.14”に合わせて、int型から浮動小数値型に変えることで解決することができます。
##実行結果
$ go run circle.go
半径を入力してください --> 4
50.24
##コード(改)
heliac2000さんより、mathパッケージ関するコメントをいただいたので、コメント内容を反映した形でプログラムを改良しました。heliac2000さんありがとうございます。
package main
import (
"fmt"
// mathパッケージを宣言
"math"
)
func main() {
var radius, circle float32
fmt.Printf("半径を入力してください --> ")
fmt.Scanln(&radius)
// math.Piが円周率となる
circle = radius * radius * math.Pi
fmt.Println(circle)
}
これまでfmt
パッケージしか使用していませんでしたが、基本パッケージの中にあるmath
パッケージ(定数や数学的な関数を使用できる)を使用してみました。
math
パッケージの中で今回使用しているのは定数Pi(π)
で、math.Pi
といった形で書くことで円周率を表すことができます。
パッケージを知ってるか否かで、プログラムの書き方って変わってくるんですね。面白い!!
##実行結果(改)
$ go run circle2.go
半径を入力してください --> 4
50.265484
コード改良前と比べて小数点以下の桁数が増えて、より正確な値になっていることが分かります。
#所感
型が誤っていればエラーで教えてくれるので素敵ですね。
型はたくさんあるようなので、次回は主要な型を整理したいと思います。