[解決済み] 4 + 20 / (3 - 1) * 2 を 4 + (20) / ((3 - 1) * 2) と解釈するのはなぜ間違いなのでしょうか?
質問
Javaを勉強していると、次のような表現に出くわします。
4 + 20 / (3 - 1) * 2
.
Eclipseでは、この式は24と評価されます。
つまり、次のように解釈されます。
4 + ((20 / (3 - 1)) * 2)
.
4 + 20 / (3 - 1) * 2 と解釈するのはなぜ間違っているのでしょうか?
4 + (20) / ((3 - 1) * 2)
となり、9になるのでは?
ありがとうございました。
アップデイト
私の質問をより具体的に説明すると、数学的には、私の側に誤解や誤認がない限り、4 + 20 / (3 - 1) * 2 は、この論文から学んだように曖昧です。
https://math.berkeley.edu/~gbergman/misc/numbers/ord_ops.html
カリフォルニア大学バークレー校の教授であるジョージ・バーグマン氏によるものです。と解釈することもできる。
4 + ((20 / (3 - 1)) * 2)
または
4 + (20) / ((3 - 1) * 2)
.
しかし、Javaでは
4 + ((20 / (3 - 1)) * 2)
の解釈は正しいように見えますが
4 + (20) / ((3 - 1) * 2)
の解釈は間違っているように見える。どちらの解釈でも、まず括弧の中のものが計算され、次に掛け算と割り算が行われ、最後に足し算と引き算が行われます。ただ、正しい解釈では割り算が先に行われ、間違った解釈では掛け算が先に行われるという違いがあります。
そこで質問なのですが、Javaにおいて、ある解釈を正しく、他の解釈を間違っているとする重要な要因は何でしょうか。
ありがとうございます。
解決方法は?
演算順序とは、最も内側の括弧を最初に評価し、次に左から右へ乗算と除算を行い、次に左から右へ加算と減算を行うことです。ここでは、左から右への原則が重要です。この演算順序は数学の標準であり、Javaは(ほとんどの言語と同様に)数学の標準に従います。 演算順序
関連
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Javaメソッドスタブ
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している