[問題 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 を返す


//

この記事が気に入ったらサポートをしてみませんか?