四則計算と計算順序|算数から数式への橋渡し

このページはプロモーション(広告)を含みます。

算数から数式への橋渡し(初級・読む20分+演習25分)

この授業のゴール

仕事でどう使うか

データの仕事は、ほとんどが小さな計算の積み重ねです。計算順序を間違えると、桁の合っている別の数字ができます。誤りに気づきにくいのが怖いところです。

路線 この授業の使いどころ
DS(データサイエンティスト) 売上、利益率、1人当たり売上などの指標を、手元の表から手で検算する。ツールの出力が正しいかを確認する
ML(機械学習エンジニア) 損失関数や正規化の式をコードに写すとき、括弧の位置を間違えると学習が静かに壊れる
DX(DX推進・AI企画) 業務削減時間の試算(件数×1件の時間×人数)や、費用対効果の見積もりに使う
RS(研究者) 論文の式を読み、実装・再計算して結果を再現する

成果物でいえば、KPI(Key Performance Indicator:重要業績評価指標)の定義書にある計算式、見積書の試算表、再現用のコードがこの授業の対象です。「式の通りに書いたはずが、数字が合わない」ときの原因の多くは、順序と括弧にあります。

前提

この授業は算数の復習から始めます。次の言葉を使うので、不安があれば戻ってください。

この授業の python run と書かれたコードは、画面内でそのまま実行できます。電卓代わりに使って、手計算の答えと見比べてください。

身近な状況:同じ式なのに、人によって答えが違う

手作りキャンドルを売る小さなオンライン店の注文を考えます(架空の例です)。

Aさんは電卓に 1200 × 3 + 500 と打ち、4,100円を得ました。次に 10% 引きの × 0.9 を打ち、3,690円です。Bさんは「割引は商品代金だけで、送料には使えない」というルールを読み、1200 × 3 × 0.9 + 500 で 3,740円 を得ました。

2人は同じ注文を計算しています。差は50円です。式の形が違うので答えが違います。この授業では、式を読む順序と括弧の役割を決まりとして身につけます。まず、2人の式を画面で確かめてください。

a = (1200 * 3 + 500) * 0.9
b = 1200 * 3 * 0.9 + 500
print("Aさん(送料も割引):", a)
print("Bさん(商品代金だけ割引):", b)
print("差:", a - b)

出力は 3690.0、3740.0、-50.0 です。a - b が負になるのは、a の方が小さいからです(符号は 負数・絶対値・数直線 で扱います)。

直感的な説明:先に結びつくものがある

1200 + 700 × 3 を見たとき、多くの人は「700円が3個で2,100円、それに1,200円を足して3,300円」と読みます。掛け算は「同じ数を何回か足す」ことの短縮形なので、足し算より強く結びつくのです。

文章にすると、「基本料金1,200円に、700円のオプションを3つ付けた」という意味です。もし「基本料金とオプション1つの合計(1,900円)を3人分」と言いたいなら、先に足したいので括弧を付けて (1200 + 700) × 3 = 5700 と書きます。

括弧は「ここを先に1つの数として計算してほしい」という合図です。式を書く人が、読む人に順序を伝えるために付けます。

たとえ話の限界:「掛け算は繰り返しの足し算」という説明は整数の掛け算ではそのまま成り立ちますが、$0.9$ を掛ける(9割にする)ような場面では「繰り返し」とは言えません。そのときは「全体を何倍にするか」と読み替えます。

正確な定義:計算順序の規則

まず用語を決めます。演算は計算の種類(足す、引く、掛ける、割る)、演算子は演算を表す記号(+、-、×、÷)、項は足し算・引き算で区切られた1かたまりです。

規則は次の3つです。数学でも、Python でも、表計算ソフトでも共通です。

  1. 括弧の中を先に計算する。括弧が重なっているときは、内側から。
  2. 掛け算・割り算を、足し算・引き算より先に計算する。
  3. 同じ強さの演算が並ぶとき(掛け算と割り算だけ、または足し算と引き算だけ)は、左から右へ順に計算する。

規則3が特に間違えやすい点です。次の表を見てください。

式 読み方 結果
$100 - 30 - 20$ 左から: $(100-30)-20$ $50$
$100 - (30 - 20)$ 括弧が先 $90$
$24 \div 4 \times 2$ 左から: $(24\div 4)\times 2$ $12$
$24 \div (4 \times 2)$ 括弧が先 $3$

数を代入して確かめましょう。$24 \div 4 \times 2$ は、左から $24 \div 4 = 6$、次に $6 \times 2 = 12$ です。「掛け算が先」と覚えて $4\times 2 = 8$、$24\div 8 = 3$ とするのは誤りです。掛け算が割り算より強いのではなく、同じ強さだからです。

割り算の用語も押さえます。$7 \div 2$ は $3.5$ です。整数だけで答えるときは「商は3、余りは1」と言い、$7 = 2 \times 3 + 1$ が成り立ちます。Python では 7 / 2 が $3.5$、7 // 2 が商の $3$、7 % 2 が余りの $1$ です。

print(1200 + 700 * 3)      # 掛け算が先 -> 3300
print((1200 + 700) * 3)    # 括弧が先   -> 5700
print(100 - 30 - 20)       # 左から     -> 50
print(100 - (30 - 20))     # 括弧が先   -> 90
print(24 / 4 * 2)          # 左から     -> 12.0
print(24 / (4 * 2))        # 括弧が先   -> 3.0
print(7 / 2, 7 // 2, 7 % 2)

24 / 4 * 2 が 12.0 と小数で出るのは、Python の / は常に小数(float型)で返すためです。数としては12と同じです。

段階付き例題:注文金額を式にして順序を決める

問題:キャンドル3個(1個1,200円)を買い、送料500円がかかる。会員割引は商品代金だけに10%。支払額は?

ステップ1:量を書き出す。単位も付けます。

量 値 単位
単価 1,200 円/個
数量 3 個
送料 500 円
割引後の倍率 0.9 (無単位)

ステップ2:単位を確認する。「円/個 × 個」は円になります(個が約分される)。割引後の倍率は単位のない数です。最後に送料(円)を足すので、足す前の2つはどちらも円です。足し算・引き算ができるのは、単位が同じ量どうしだけです。「1,200円 + 3個」は意味のない計算です。

ステップ3:式にする。割引は商品代金だけなので、送料は割引の外に出します。

$$\text{支払額} = 1200 \times 3 \times 0.9 + 500$$

ステップ4:順序に従って計算する。掛け算を左から: $1200 \times 3 = 3600$、$3600 \times 0.9 = 3240$。最後に足し算: $3240 + 500 = 3740$。

ステップ5:意味を言う。支払額は 3,740円。もし送料も含めて割り引く規則なら (1200 * 3 + 500) * 0.9 = 3690 です。規則の読み違いで50円の差が生まれます。式を書いたら、必ず文章でも言い直しましょう。

ステップ6:検算する。大まかな見積りで確認します。商品代金は約3,600円で、その1割(360円)を引くと約3,240円、送料を足して約3,740円。見積りと一致しています。

操作して理解する:括弧を動かして結果の変化を見る

次のコードは、括弧を付け外しして結果を比べます。実行前に結果を予想してから実行してください。

# 1個1,200円×3個+送料500円
price, qty, ship = 1200, 3, 500
print("そのまま      :", price * qty + ship)
print("括弧で割引    :", (price * qty + ship) * 0.9)
print("商品代金のみ  :", price * qty * 0.9 + ship)
print("1個あたり送料 :", ship / qty)
print("1個あたり総額 :", (price * qty + ship) / qty)
print("括弧なしの誤り:", price * qty + ship / qty)

読み方のポイント:

式の結果を読むときは、いつも「この数字は何の量で、単位は何か」を自分に問います。

発展:累乗、負数、右結合と、実務での書き方

累乗(同じ数を何回も掛ける: $2^3 = 2\times2\times2 = 8$)は、掛け算より強く結びつきます。さらに、累乗が重なると右から計算します。$2^{3^2}$ は $2^9 = 512$ で、$(2^3)^2 = 64$ ではありません。

Python では累乗を ** で書きます。2 ** 3 ** 2 は 512 です。

負の数の累乗には罠があります。数学では $-3^2$ は「$3^2$ にマイナスを付けた」$-9$ と読み、$(-3)^2 = 9$ とは別です。Python の -3 ** 2 も -9 で、(-3) ** 2 が 9 です。

print(2 ** 3 ** 2, (2 ** 3) ** 2)
print(-3 ** 2, (-3) ** 2)

実務で長い式を書くときの心がけ:

よくある失敗

失敗1:足し算を先に済ませてしまう

誤った例:電卓に 1200 + 700 × 3 を左から順に打ち、5,700円とした。

wrong = (1200 + 700) * 3   # 誤り: 自分で括弧を付けたのと同じ
right = 1200 + 700 * 3
print(wrong, right)

多くの簡易電卓は、キーを押した順に計算します(式の優先順位を使わない)。書いた式の意味は 1200 + (700×3) = 3,300円です。直し方:掛け算を先に書き出す(700 × 3 = 2100、次に 1200 + 2100)か、書いた通りに計算してくれるツール(表計算、Python)で確かめます。

失敗2:割り算と掛け算の順を逆に読む

誤った例:24 ÷ 4 × 2 を「掛け算が先」と考えて $24 \div 8 = 3$ とした。

print(24 / 4 * 2)      # 正しい: 12.0
print(24 / (4 * 2))    # 括弧を付けた別の式: 3.0

掛け算と割り算は同じ強さなので、左から順に計算します。正しい答えは 12 です。「4で割って2を掛ける」と言い換えれば、$6 \times 2 = 12$ と確認できます。3 にしたいなら、書き手が 24 ÷ (4 × 2) と括弧を付ける責任があります。分母に複数の数が入るとき(例:「売上÷(来店者数×客単価)」)は、括弧を必ず付けます。

失敗3:割引の対象と単位を確かめずに式を作る

誤った例:「商品代金のみ割引」というルールなのに、(1200 * 3 + 500) * 0.9 で3,690円と答えた。

rule_ok = 1200 * 3 * 0.9 + 500
wrong = (1200 * 3 + 500) * 0.9
print(rule_ok, wrong, rule_ok - wrong)

差は50円です。1件なら小さいですが、月に1万件あれば50万円の請求誤りになります。直し方:①ルールを日本語で読み直す(何に割引をかけるか)、②量と単位を書き出す、③式にする、④別の見積りで検算する。この順で作ります。

まとめ

用語

演算子(operator)

足す・引く・掛ける・割るなどの計算の種類を表す記号(+、-、×、÷)。

括弧(parentheses)

中の計算を先に1つの数として扱うための記号。内側から先に計算する。

商と余り(quotient and remainder)

整数の割り算の結果。7÷2 なら商は3、余りは1で、7 = 2×3 + 1 が成り立つ。

累乗(power)

同じ数を何回か掛けること。2の3乗 = 2×2×2 = 8。掛け算より先に計算する。

よくある質問

なぜ掛け算を足し算より先に計算するのですか?

世界共通の約束事です。「700円を3つ」のようなまとまりを先に作ってから合計するのが自然だからです。約束が共通だからこそ、書き手と読み手、人とコンピュータで同じ答えになります。

括弧は多く付けてもよいですか?

かまいません。不要な括弧は結果を変えません。実務では、誤読を防ぐために括弧や途中結果への名前付けを積極的に使います。ただし、括弧だらけで読みにくくならないよう、式が長くなったら分けましょう。

電卓と表計算ソフトで答えが違うことはありますか?

あります。簡易電卓はキーを押した順に計算するものがあり、表計算やプログラミング言語は優先順位に従います。ルールを知っていれば、どちらの結果が式の意味に合うかを判断できます。

実務では、計算順序の間違いをどう防ぎますか?

①量と単位を先に書く、②途中結果に名前を付ける、③別の方法(大まかな見積り)で検算する、④レビューで他の人に式を読んでもらう、の4つです。数字が「それらしい」からといって正しいとは限りません。

整数の割り算と小数の割り算は何が違いますか?

整数だけで答えるときは商と余り($7\div2$ は商3、余り1)、小数で答えるときは3.5です。Python では // と % が商と余り、/ が小数です。使う場面で選びます。例えば「7人を2人ずつの班に分けると何班できるか」は商の3です。

計算結果を何桁まで書けばよいですか?

元データの精度に合わせます。途中は桁を落とさず、最後に丸めます。円の金額なら小数点以下を切り捨てるか四捨五入するかを、事前に決めておきます。詳しくは 単位と桁と丸め の単位と丸めに戻って確認してください。

確認問題

問1 $8 - 2 \times 3$ の値はどれか。

  1. ① 18
  2. ② 2
  3. ③ 14
  4. ④ 6
解答と解説

正解:②

掛け算を先に計算して $8 - 6 = 2$ です。

問2 $24 \div 6 \times 2$ の値はどれか。

  1. ① 2
  2. ② 48
  3. ③ 4
  4. ④ 8
解答と解説

正解:④

同じ強さの演算は左から計算します。$24\div6=4$、$4\times2=8$ です。

問3 1個1,200円を3個、送料500円。「割引10%は商品代金だけ」というルールのとき、正しい式はどれか。

  1. ① $1200\times3 + 500\times0.9$
  2. ② $(1200\times3+500)\times0.9$
  3. ③ $1200\times3\times0.9+500$
  4. ④ $1200\times(3+500)\times0.9$
解答と解説

正解:③

割引は商品代金($1200\times3$)だけにかけ、送料は割引の外で足します。

問4 「1,200円 + 3個」のような式を作ってはいけない理由はどれか。

  1. ① 単位が違う量は足せないから
  2. ② 数が小さすぎるから
  3. ③ 掛け算より先に足してしまうから
  4. ④ 円は整数でなければならないから
解答と解説

正解:①

足し算・引き算ができるのは、同じ単位の量どうしです。円と個は別の量です。

問5 簡易電卓で $1200 + 700\times3$ を左から順に打つと5,700円になった。この結果の評価として正しいのはどれか。

  1. ① 式の通りの結果である
  2. ② 式の意味は3,300円で、電卓の打ち方が式の優先順位と合っていない
  3. ③ 電卓の故障なので買い替える
  4. ④ 700円を先に3倍する必要はない
解答と解説

正解:②

式の意味は $1200+(700\times3)=3300$ です。キーを押した順に計算する電卓は優先順位を使わないことがあるため、式と結果がずれます。

問6 来店者数が0の日に「売上÷来店者数」を計算する。正しい扱いはどれか。

  1. ① 結果は0として扱う
  2. ② 結果は売上と同じになる
  3. ③ 割り算が定義されないので、0円ではなく「計算できない」として扱う
  4. ④ 無限に大きい数なので、最大値を入れる
解答と解説

正解:③

0で割る計算は定義されません。「1人当たり売上は0円」と書くと、観測した0と計算不能を混同します。

次に学ぶこと

次は 分数と小数と比 で、分数・小数・比の使い方を学びます。割り算の結果を「何を何で割ったか」で読む練習です。

この授業の確認問題で習得とはしません。ON05 の総合テストと、損益分岐点の課題で判定します。単位の復習は 単位と桁と丸め、割合の復習は 比率・割合・パーセントポイント に戻ってください。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い