琴葉葵

おねーちゃん!数学で「平方根」とか「サイン(sin),コサイン(cos),タンジェント(tan)」ってちょっと変わった計算方法を習うけど、これってプログラムで計算ってできるの?

琴葉茜

もちろん!そんな時は「math」っていうのを使えば計算できるよ!

解説画像1
琴葉葵

やっぱりできるんだね!この「math」は一体どんなことができるの?

琴葉茜

「math」を使ってできる計算方法はすごく多いし、習ってないこともあるだろうから全部は理解しなくて良いけど、まずは一覧で紹介するね

関数説明結果
math.sqrt(x)x の平方根を返すmath.sqrt(9)3.0
math.pow(x, y)x の y 乗を返す(浮動小数)math.pow(2, 3)8.0
math.factorial(x)x の階乗(x!)を返すmath.factorial(5)120
math.dist(p, q)2点 p, q 間の距離(ユークリッド距離)math.dist([0, 0], [3, 4])5.0
math.gcd(x, y)x と y の最大公約数math.gcd(24, 36)12
math.lcm(x, y)x と y の最小公倍数math.lcm(4, 6)12
math.floor(x)x を小さい方の整数に切り下げmath.floor(3.7)3
math.ceil(x)x を大きい方の整数に切り上げmath.ceil(3.1)4
math.trunc(x)x の小数部分を切り捨てmath.trunc(3.9)3
math.pi円周率(π)math.pi3.1415...
math.sin(x)
math.cos(x)
math.tan(x)
x の三角関数(単位はラジアン)math.sin(math.pi/2)1.0
math.radians(deg)度をラジアンに変換math.radians(180)3.1415...
math.degrees(rad)ラジアンを度に変換math.degrees(math.pi)180.0
math.log10(x)常用対数(底10)math.log10(1000)3.0
math.log(x)自然対数(底e)math.log(math.e)1.0
math.exp(x)e の x 乗math.exp(1)2.718...
math.e自然対数の底(e)math.e2.718...
← 横にスクロールして確認しよう! →
琴葉葵

ホントにどんな計算でもできる...!!知らないやつまであるよ

琴葉茜

これでも一部だけどね
使いたくなった時に調べるくらいでちょうど良いと思うよ

琴葉葵

あーよかった...
ところで、「切り上げ」と「切り下げ」はあるのに「四捨五入」は無いんだね

琴葉茜

あぁ、そういえば紹介してなかったね
「四捨五入」はmathを使わなくても「round(数値)」っていうのがあるんだ

解説画像2
琴葉葵

そうなんだ!なんか四捨五入だけ別だと「math.round()」とかやっちゃいそう

琴葉茜

もう一つ気を付けてほしいことがあって、基本的には四捨五入の時は「round()」を使うことが多いけど特定の条件でうまくいかない時があるんだよね

解説画像3
琴葉葵

あれ??「0.5」を四捨五入すると「1」になるはずなのに「0」になってる!!

琴葉茜

そう、「round()」は細かくいうと「四捨五入」じゃなくて「偶数丸め」と言って、丸める数値が「ちょうど真ん中」の場合は偶数側に丸める挙動をするんだよね

琴葉葵

なるほど、分からん...

琴葉茜

まぁおかしい挙動になる可能性があるって注意しておけば大丈夫だよ!
一応、四捨五入を正しくする場合のプログラムも紹介しておくね

解説画像4
琴葉葵

なんか難しそう...

琴葉茜

まぁそこまで四捨五入を使う場面は多くないから、こういうやり方があるんだって認識くらいで大丈夫だよ

琴葉葵

そうしとく!

琴葉茜

他の関数についてもそれぞれ気を付けるポイントがあったりするから、挙動がおかしいなと思ったら原因を調べるクセを付けるようにしようね!