1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

半径を入力して、円の面積を求める

Last updated at Posted at 2014-12-07

こんにちは、@Solphaです。

今回は円の面積を求めるプログラムを書いてみたいと思います。

#概要

  • 半径のみ入力
  • 円周率は1世代前の学校の授業で使われていた「3.14」を適用

#プログラム

##コード

circle.go
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さんありがとうございます。

circle2.go
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

コード改良前と比べて小数点以下の桁数が増えて、より正確な値になっていることが分かります。

#所感
型が誤っていればエラーで教えてくれるので素敵ですね。

型はたくさんあるようなので、次回は主要な型を整理したいと思います。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?