[問題 7-3]のヒント
1.「27643」を100の位で四捨五入しましょう。
(ノートを使って、解き方をメモしながら説いてください)
2.任意の数nをmの位で四捨五入した結果を返す関数「四捨五入する」をプログラムしましょう。
問題にある「27643」を100の位で四捨五入する手順を考えましょう。
まず、「27643」の100の位で四捨五入するので、1の位の数と10の位の数は「0」になります。
27600
次に27600の100の位の数は「6」です。この数が「4」以下の場合は切り捨てますが、「5」以上の場合は切り上げます。「6」は「5」以上なので、切り上げます。
28000
手順を整理します。
1)10以下の数を切り捨てる
2)100の位の数が「4」以下の場合は切り捨てる。「5」以上であれば切り上げる
これをプログラムふうに書くのですが問題が2つあります。
1つ目は、どうやって10の位以下を切り捨てるのか。もう一つは、100の位の数字をどうやって抜き出すのか。
まず、10の位以下を切り捨てる方法ですが、例えば次のようにします。
1-1)27643を100で割ったあまりを求めます(この問題では、あまりは43になります)
1-2)27643から、1-1)で求めたあまりを引きます(27643 - 43 = 27600)
次に、27643の100の位の数字を抜き出す方法を考えます。
2-1)27643を100で割ります(27643 ÷ 100 = 276)
2-2)上の式で求めた数字を10で割ったあまりが100の位の数字になります
もう一度手順を整理すると、次のようになります。
1-1)27643を100で割ったあまりを求めます(この問題では、あまりは43になります)
1-2)27643から、1-1)で求めたあまりを引きます(27643 - 43 = 27600)
2-1)上の式1-2)で求めた26600を100で割ります(27643 ÷ 100 = 276)
2-2)上の式2-2)で求めた数字(276)を10で割ったあまりが100の位の数字が
「4」以下の場合
2-1)で求めた数字(276)から2-2)で求めたあまり(6)を引く(276 - 6 = 270)
「5」以上の場合
2-1)で求めた数字(276)から2-2)で求めたあまり(6)を引く(276 - 6 = 270)
上で求めた数字(270)に10を足す(276 + 10 = 280)
3)このままでは、27643を100で割ったままなので、100倍してもとの桁数に戻します
(280 × 100 = 28000)
では、四捨五入を計算する関数をプログラムふうに説明します。
関数「四捨五入計算」では、四捨五入をする「もとの数」と四捨五入する「桁」の2つを引数とします。関数からの戻り値は四捨五入した結果の数字です。
関数:「四捨五入計算」(もとの数、桁)
あまり = 「元の数」を「桁」で割ったあまり ←上記1-1)
n = 「もとの数」- あまり ←上記1-2)
n = n ÷ 桁 ←上記2-1)
あまり2 = nを10で割ったあまりの数 ←上記2-2)
もし あまり2 が「4」いかであれば
n = n - あまり2
それ以外
n = n - あまり2
n = n + 10
n = n × 「桁」 ←上記3)
n を返す
//
この記事が気に入ったらサポートをしてみませんか?