Windows 10の電卓アプリは演算子の優先順位を無視する? 35
ストーリー by headless
普通 部門より
普通 部門より
Windows 10の電卓アプリが演算子の優先順位を無視するとして、Redditで話題になっている(Softpediaの記事)。
問題の動作は「標準」モードで発生するもので、電卓の動作として間違っているわけではなく、バグというわけでもなさそうだ。つまり、普通の電卓(アプリではない単体の電卓専用機)では演算子の次に数字が入力された状態で演算子のキーを押すと計算が実行されるため、たとえば「2+2×3=」と押した場合の結果は「(2+2)×3」で「12」となる。一方、「=」を押すまで計算が実行されない「関数電卓」モードでの結果は「8」となる。
普通の電卓では特に気にならないと思われるが、Windows 10の電卓には計算履歴の表示機能があり、標準モードでも履歴に「2+2×3=12」と表示される。また、AndroidやiOS標準の電卓では「=」を押すまで計算が実行されず、結果は「8」になるようだ。最近はアプリの電卓を使うことが多いと思われるが、普通の電卓の動作は忘れられてしまったのだろうか。
問題の動作は「標準」モードで発生するもので、電卓の動作として間違っているわけではなく、バグというわけでもなさそうだ。つまり、普通の電卓(アプリではない単体の電卓専用機)では演算子の次に数字が入力された状態で演算子のキーを押すと計算が実行されるため、たとえば「2+2×3=」と押した場合の結果は「(2+2)×3」で「12」となる。一方、「=」を押すまで計算が実行されない「関数電卓」モードでの結果は「8」となる。
普通の電卓では特に気にならないと思われるが、Windows 10の電卓には計算履歴の表示機能があり、標準モードでも履歴に「2+2×3=12」と表示される。また、AndroidやiOS標準の電卓では「=」を押すまで計算が実行されず、結果は「8」になるようだ。最近はアプリの電卓を使うことが多いと思われるが、普通の電卓の動作は忘れられてしまったのだろうか。
大丈夫 (スコア:2)
10年後にはそれが業界のデファクトスタンダードになっているから。
// と、20年くらい前なら真面目な顔で言われていたかも。
Re: (スコア:0)
Windows 7のデスクトップ版電卓もこの仕様だったが。(通常モードだと無視して関数電卓モードだと優先順位順に計算するのも同じ)
むしろ、「10年前はこれが業界のデファクトスタンダードだった」でしょう。
Re: (スコア:0)
なんで今頃話題にしてんだろうな...
Re: (スコア:0)
10年前はスマホがなかった(と言うと語弊があるが、PCに比べて無視していい程度だった)からでしょ。
Re: (スコア:0)
Windows98からしか使った事ありませんが、その時からこの仕様だったと思うのですが。
履歴機能の表示内容に対する指摘なら、確かにおかしいと思いますけどね。
でも履歴が、((((1+1)+1)+1)+1)とか冗長過ぎてどうかなぁと思いますし。
ただ、関数電卓使った事無くて、日常生活で何かの公式を使ったりする事も皆無の自分のような一般人からすれば、通常モードの方が使い易いです。
込み入った計算はコマンドラインからスクリプトとかを使いますし。
Re: (スコア:0)
「おめえが入力した式は、本当はこういう計算式だよな。賢いオレが自動的に修正してやるぜ。その計算結果はこれだ。どうだスゲーだろ。」というMicrosoftらしい機能なんだろうな、と思ってました。
// Google翻訳も入力した内容を勝手に変更して翻訳するようになったんですね。
// どうだスゲー翻訳機能だろ。おめえの事はオレが一番よくわかっているからよ。礼には及ばねえよ。
普通の電卓の動作 (スコア:2)
普通の電卓の動作ってなに?
Re: (スコア:0)
普通の電卓買ってくれば分かるよ
Re: (スコア:0)
いつまでも少年の心を持ち続けるのはいいことだが、
いつまでも小学生の心のままだと恥ずかしいぞ
Re: (スコア:0)
卓上の巨大な計算機じゃなくて、今どきの手のひらに乗せることが出来る計算機のことじゃないか?
Re: (スコア:0)
手のひらに乗せることができる画面にタッチして操作する計算機のことですか?
Re: (スコア:0)
223+×と入力すると12が出てくる電卓のこと
Re: (スコア:0)
合コンでその電卓を取り出してしまったのですね…
Re: (スコア:0)
10じゃないんだ…
Re: (スコア:0)
0.000と出ましたが
履歴の表示機能側のバグ (スコア:1)
これは履歴の表示機能のバグでしょ?
普通の電卓で 2,+,2,*,3,= ってやったら(2+2)*3 で演算されるし。
勝手にかっこをつけるか、演算ごとに式を分けて表示する仕様にするべき。
マクロの基本は検索置換(by y.mikome)
Re:履歴の表示機能側のバグ (スコア:1)
ユーザの[入力履歴]という解釈なら現行が『ただしい』と思います。
実存する"電卓"のエミュレータなんだから、現状の動作が正しい。
(100円ショップで買ってきた電卓と、ほぼ同じ動作をしてくれないと、爺婆に説明する時、面倒ですし)
# つ~か、元記事の人達はリアル電卓を使わないのでせうか?
notice : I ignore an anonymous contribution.
Re: (スコア:0)
>演算ごとに式を分けて表示する仕様にするべき。
直すならこっちかなー
括弧を付ければ式として正しくなるかもしれないけど見づらいし
実態として毎回結果を出してるわけだからその通りに見せればいいと思う
Re: (スコア:0)
いまや100円(税別)で買える電卓との互換性を取れば、勝手に括弧を付けるほうかな
関数電卓は別に実装されているわけだし
演算子の優先順位を考えて計算させるとなると、字句解析など、ちょっとしたコンパイラの機能を実装することになるが、
そんなことまで電卓に実装させるなよ
eval一発でできるようなものじゃないんだぞ
初~中級プログラマだと演算順位まで考慮した電卓を実装するのは結構難しい(と思う)
数式そのまま突っ込みたい (スコア:0)
MCとかMRとかMSとか、電卓の使い方が分からない
Re:数式そのまま突っ込みたい (スコア:2)
MC メモリークリア
MR メモリーリセット
MS メモリースロー
Re: (スコア:0)
MSはモビルスーツではなくメモリーストアだとおもっていた。
Re: (スコア:0)
今時の関数電卓は数学自然表示とかいう機能で数式そのまま入力できる感じになってますよ
Re: (スコア:0)
電卓の使い方が分からない
メーカーによりますが、一般的にはこんな感じ。
MC … ビックマックが出てきます
MR … ポン・デ・リングが出てきます
MS … 機動兵器が出てきます
逆ポーランド式復活かな…。 (スコア:0)
演算順序を考えなくて良いらしいですね。使ったこと無いけど。
「=」キーがあるかどうか、がポイントなのかな。
iPhoneで計算してて答えが合わなくて変だな、と思ったことあるんですが、このせいだったんですね。
せめて入力中の計算式表示してくれれば、悩むことも無かったのになぁ…。
※たいしたことない、買い物の計算だったんで暗算で済ませた。
Re: (スコア:0)
電卓で考えた場合は、「カッコを使わなくても複雑な式の計算が出来る」というのが大きいかと。
RPNじゃない奴だとちょっと複雑な式を入力すると、すぐにカッコだらけになって数え間違ってカーソルキー連打ってことになりやすい。
それこそ後ろの方でカッコが一個ふえたら、一番前まで戻って対応するカッコを挿入しなけりゃならん。
RPNでも複雑な計算式を入力する時は「ここまで計算した、それに4をかけて...」みたいな処理は
「頭の中で」してるけど、カーソルキーを連打する必要は無い。(というかカーソルキーなんてないよな?)
>「=」キーがあるかどうか、がポイントなのかな。
特徴としては=がないのは言われるけど、普通の電卓でも実はそれほど=は使ってないでしょ。
たとえば「1+2+3」をしたければ、
「1+2+3+」って入力すれば途中結果として見えるから。
先生も大変だろうなあ (スコア:0)
「僕の計算はあっています!ほら!電卓でも同じ答えじゃないですか!」ってクレームが増えるんだろうか。
Windows 10連呼してるけど (スコア:0)
XPの電卓だって[普通の電卓]時は12で[関数電卓]時は8よ。
現行のは関数電卓とプログラマーが分かれて使いにくいので使ってない。
Re: (スコア:0)
そうそう、
モードを変えたときに、値が残っていれば便利なのに。
考えて作ってなかったんだろな (スコア:0)
あまり突っ込むと直りそうだが
安い電卓と一緒と考えるべきでしょw
Re: (スコア:0)
関数電卓モードと標準電卓モードで分けてるんだから、あえてこうしてると考えるのが普通
Re: (スコア:0)
記事を読めよ。
PowerToysどこいった (スコア:0)
Power Calculator復活希望
優先順位よりももっと言いたいことあるだろ? (スコア:0)
起動がくそ遅い。
モードによって動きが違って使い難い。