パスワードを忘れた? アカウント作成
13973754 story
Twitter

演算子の優先順位でTwitterの意見が二分される 169

ストーリー by headless
二分 部門より

「8÷2(2+2)」という数式の計算結果が「1」になるか「16」になるかでTwitterの意見が二分されている(Mashableの記事)。

この手の数式は以前からたびたび話題になっているが、関数電卓でも機種によって結果が異なる。Twitterでは演算子の優先順位にPEMDASを使うかBODMASを使うかで除法(Division)と乗法(Multiplication)の順番が変わるため結果が異なると誤解している人も多いようだが、PEMDASでもBODMASでも除法と乗法は先に出てくる方(左側)が優先であり、これによる計算結果の違いはない。実際の問題としては括弧付きの暗黙の乗法が除法に優先すると解釈するかどうかによる違いだと思われる。つまり、括弧付きの暗黙の乗法が除法に優先すると解釈するなら「8÷(2×(2+2))」(= 1)となり、優先しないと解釈するなら「8÷2×(2+2)」(= 16)となる。スラドの皆さんのご意見はいかがだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 8/2(2+2) (スコア:5, すばらしい洞察)

    by loose duce (47070) on 2019年08月04日 12時16分 (#3663481) 日記

    8/2(2+2)
    テストでこう書かれるとどっちが正解でもバツにせざるを得ないかも
    \displaystyle{\frac82}(2+2)

    8/(2(2+2))

    割り算記号÷は小学生向けだから低優先度というのもオレオレルールな感じがする

  • by Anonymous Coward on 2019年08月04日 12時22分 (#3663484)

    そもそも掛け算記号を省略する数式では割り算に÷記号は使わない。
    掛け算記号を省略する数式というのは掛け算割り算でまとめた部分を「項」と呼ぶ。
    この場合割り算は分数表記にする。÷の出番は無い。
    つまり
    8

    2(2+2)
    と書くか
    8
    ー(2+2)
    2
    と書くかで区別できる。

    じゃあ無理やり一行に書くために「8/2(2+2)」と書いたらどっちなのよ?
    というギモンがわくが…少なくとも算数や数学の教科書ではそんな書き方はしない。

    • 通常の乗法演算子『×』および除法演算子『÷』があり、それとは別に、
      優先順位のひとつ高い演算子『・』(省略可能)および『/』があって、項を作るために使われる
      という記法を考えれば、矛盾しないですね。(どこかでそういうのを見たような気がする)

      親コメント
    • by Anonymous Coward on 2019年08月04日 14時27分 (#3663556)

      問題の根幹はそこよね。
      通常混在できない式表現が混在しているという「出題の問題点」をどう処理するか。
      テストの問題としては出題がおかしいで終わりだし、
      式構築者による何らかの演算表現であればその意図した所を読み解く他ない。

      何かを説明するための数式に新しい表現や特殊な表現を組み込むことはままあるので、
      意図的に乗除演算子省略表現と乗除演算子利用表現を混在している場合、
      そこに意味があるとするなら省略表現は一段階優先度が高いとみなすほうが自然に思える。
      でもそんなオレオレルールが適用されていると判断できるだけの根拠(文脈)が無いのでなんとも言えない。

      親コメント
    • by Anonymous Coward

      だわな。そして「8/2(2+2)」と記述したならば(日本の)教科書に則る限りは

      8

      2(2+2)

      と解釈するしかない

      タレコミにある「括弧付きの暗黙の乗法」の解釈が云々ではなく、記述方法の問題

  • by vax730 (32985) on 2019年08月04日 12時31分 (#3663487)

    16になりました。
    x / y z = (x / y) \times z
    ですので,16で良いとは思います。

  • by loose duce (47070) on 2019年08月04日 17時43分 (#3663643) 日記

    これはどっち?
    s/cc/s = 1
    それとも
    s/cc/s = 1/(c^2)
    ちなみにccをsで置き換えるじゃないよ

  • ・16でも間違いじゃない
    ・式が不完全
    ・義務教育で習ってない

    とも言ってるけど、ワイが現役の時はこんな問題無かった。

  • by Anonymous Coward on 2019年08月04日 12時08分 (#3663475)

    読売のサイトですが「算数の基礎」と題して
    https://komachi.yomiuri.co.jp/... [yomiuri.co.jp]

  • by Anonymous Coward on 2019年08月04日 12時53分 (#3663501)

    面倒な話は苦手だ

  • by h-harry (24932) on 2019年08月04日 12時54分 (#3663503) 日記

    に変換すると

    左結合
    8÷2(2+2)
    → 8 2 ÷ [ * (2+2)+ ]
    → 8 2 ÷ [ * ] 2 2 +
    → 8 2 ÷ 2 2 + × = 16

    右結合
    8÷2(2+2)
    → [ 8 ÷ 2 * ] ÷ 2 2 +
    → [ 8 ÷ ] 2 2 2 + ×
    → 8 2 2 2 + × ÷ = 1

    C言語の勉強したときは左結合で作ったな。

  • by Anonymous Coward on 2019年08月04日 13時02分 (#3663507)

    6~7年前にも「6÷2(1+2)=1?9?」って、Twitterで全く同じ議論してたな

    ω/2πって書いたらどう読むか、それが数字だと何が違うのか
    中学で導入される項・係数・一次式のルールに沿って考えると
    ・小学生なら答えは「式が誤り」
    ・中学以降の答えは「式が誤り、しいて解釈するなら1」
    ・海外も基本的には「式が誤り」
    っていう落とし所に落ち着いてたように記憶してる

  • by minet (45149) on 2019年08月04日 13時03分 (#3663508) 日記

    Number(arg) は、argをNumber倍した新しい数値を返す関数である。
    …という風に見えている人も一定いるのではないかと考えますが、如何でしょう。

  • by Anonymous Coward on 2019年08月04日 13時05分 (#3663511)

    8/2aと8/2(a)で結果が変わるのは適切でない
    問題は積算記号を省略した場合の優先順位

  • by t_mrc-ct (5292) on 2019年08月04日 13時43分 (#3663537) 日記

    結果は実行環境依存ってことで全員正解ではだめですか?

    # こういう曖昧な式の計算結果に依存することが大間違い!!

  • by ta-321 (42590) on 2019年08月06日 14時18分 (#3664820)
    Excel ちゃんは
    =A1/B1(C1+D1)
    =A1/(B1(C1+D1))
    の両方ともエラー吐きますね。文法の問題でもあるけど。
    =A1/B1*(C1+D1)なら16
    =A1/(B1*(C1+D1))なら1

    エクセルはともかく、直感では1かもしれないけど、優先順位を守るなら見た目があまり変わらない16の方が自然に思える。
  • by Anonymous Coward on 2019年08月04日 12時04分 (#3663472)

    記事で取り上げられてるツイートに画像あったけど、TIのグラフ電卓で16になっちゃってるのがびっくり

  • by Anonymous Coward on 2019年08月04日 12時12分 (#3663478)

    式を一塊で扱う為に使われるもの。
    だから優先されなければおかしい。

    • by Anonymous Coward

      8÷(2+2)^2
      8÷(2+2)(2+2)
      で結果が違うのは納得できんわな。

    • by Anonymous Coward

      それは割り算を分数で表記する(つまり項と項の間を結ぶのは基本的に優先度の低い+か-だけ)という前提のルールだし。その前提が満たされないのに機械的にルールを適用したらおかしくなるのは当然

  • by morossho (37260) on 2019年08月04日 12時15分 (#3663480) 日記

    一般人が学生を卒業するまでに普通に習う方法で1になるんだから1でいいじゃない。

    • by Anonymous Coward

      普通に習う方法で÷(小学校)と×の省略(中学以上)を同時に使うことはないと思うが。

      • by Anonymous Coward

        方程式では普通にありますよ?
        そこに数値代入したものと考えれば何も悩むことはない

        まさか元が代数かどうかで計算方法変わるとはいいますまい?

    • by Anonymous Coward

      逆でしょ。学校教育的には16になるはず。
      まずカッコが最優先なのでそれを計算して、割り算掛け算は全て同一順位で扱うから16になる。
      省略された記号を優先するルールは学校教育にはないよ。

      • by Anonymous Coward

        学校教育的には1ですよ。
        記号省略されてたらそっち優先。ひとかたまりの値扱い。

  • by Anonymous Coward on 2019年08月04日 12時21分 (#3663483)

    誤解しづらいような表記を心がければいいじゃんと思う。
    プログラム言語なんかは演算順序が定まってて曖昧にはなりづらいけど、それでも最近のコンパイラは
    注意してくれるからありがたい。

    • by Anonymous Coward on 2019年08月04日 13時12分 (#3663519)

      「心がけてればバグなんか入らない」と思ってるタイプかな

      Google電卓は16になりました~、Googleだったら正しいのかよ、って
      モロに「最近のコンパイラでも注意してくれない」曖昧ケースの話をしてるのに

      親コメント
  • by Anonymous Coward on 2019年08月04日 12時52分 (#3663500)

    自分は最初8÷(2×(2+2)) = 1と計算してから「あ、これ違うわ」と8÷2×(2+2) = 16の答えを出しました
    掛け算記号は省略しようがしまいが計算式の意味は同じだと判断したからです
    自分が知らないだけで省略した場合は計算順序が変わるというルールがあるならば無知をさらす事になりますが
    正直意見が真っ二つなのには違和感しかありません

    何故数式がこんなに曖昧に解釈されるのかと考えてみて
    たぶん普通の数式では÷や/はつかわず分数で表すんだろうな(だから問題が起きないんだろうな)という考えに至りましたが
    プログラム等で横一列で書く場合もカッコ無しで統一した解釈があると思うのですが…

typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...