天才少女のイラスト

Q. Scratchで小数で四捨五入できますか?
A. 標準機能ではできませんが、ちょっとした裏技を使えば出来ます。

………………………………………………

こんにちは。
コンピュータケア愛媛の菊池です。

現在、八幡浜市の保内福祉会館で「Scratch3.0で始める初めてのプログラミング」講座の講師を担当させて頂いています。(市のパソコン教室)

先生のイラスト(男性)

先日、受講生のお一人から数値の四捨五入についての質問を頂きました。

ご質問を1行にまとめると
「計算結果が小数になる時、小数第n位で四捨五入できますか?」
というものでした。

先生と生徒のイラスト

「演算」カテゴリの「◯を四捨五入」ブロックはこれです。

◯を四捨五入

実際に使ってみると分かるのですが、小数第一位で四捨五入するので整数を返します
値を入れるところが1つしかないので、桁数を指定する箇所がありませんね。
したがって標準機能では小数の任意の桁(好きな桁)で四捨五入はできません。

こんな時は、公式ドキュメントを確認して、何か説明されていないか確認してみます。

公式ドキュメントに相当するのはこれだと思いますのでリンクを張っておきます。

() を四捨五入 (ブロック) – Japanese Scratch-Wiki
(以下、該当箇所のスクショを引用)

() を四捨五入 (ブロック) 提案事項

>一部のScratchersから、桁数を指定して四捨五入するブロックがほしいという声が上がっている。

やっぱり。他の方も思っているようです。

>これが実現した場合、次のようになるだろう:
>上記ブロックの動作は、数値に10の累乗をかけて四捨五入したあと、かけた分の10の累乗で割れば再現できる(10より大きい位で四捨五入するときは、10の累乗で割ってから四捨五入して、その後、最初に割った分の10の累乗をかければよい)。

なるほど!
自分ではパッと思いつかなくても、言われたら「確かに」と思うコロンブスの卵ですね!

しかし教室でこのページをお伝えしただけでは「よく分かりません」というセリフが返ってきそう。

ということで、もう少しかみくだいた実装例を作りましたので、ご紹介しますね。

小数第1位まで得たいなら(小数第2位を四捨五入したいなら)
小数第1位で四捨五入

小数第2位まで得たいなら(小数第3位を四捨五入したいなら)
小数第2位で四捨五入

小数第3位まで得たいなら(小数第3位を四捨五入したいなら)
小数第3位で四捨五入

発展例:直角三角形で三角比(sinθ, cosθ, tanθ)を小数第2位まで得たいなら
三角比で四捨五入を使う事例
ですね。

ご参考になると幸いです。

【追伸】
Scratchでも算数や数学のプログラミングはある程度できます。(というか結構できます)
しかしScratchは「そもそも」主に初心者向けのプログラミング言語です。
あまり凝ったことは難しそうです。
今回は出来ましたが、もっと深堀りしたい時は、Scratchを学んだ後、Pythonなどに進むことをお勧めします。

菊池

プログラミングしていて「こんなことしたい」「こんなことできるかな?」と思った時は、次の順番でトライしてみてください。
▼独学(自習)の時
1. Google検索して調べる(2024年現在だと生成AIで調べるのも◎)
2. 公式ドキュメントを調べる(公式ドキュメントがどれか分からなければそれも調べる)
3. 答えがありそうな本で調べる(本を買っていない時はどの本がいいかも調べる)
4. 探してもなければ自分で作る
▼プログラミング教室に通っている時
講師に質問できるのでめちゃくちゃ楽。笑