アプリ版:「スタンプのみでお礼する」機能のリリースについて

この質問の続きです。
https://oshiete.goo.ne.jp/qa/10989188.html
上記Q&Aで解決方法は分かったので一旦クローズしました。
ある式で再現する方法を見つけたので、原因を判明したく、新規で質問させていただきます。

以下の手順で、正常にソートされません。

■手順1(まずデータを作る)
A1セルにこの式を入力します。
=10/3 + 10/3 + 10/3 + 9/3
A2セルにこの式を入力します。
=10/3 + 9/3 + 10/3 + 10/3
B1に数字の1を入力
B2に数字の2を入力

以下のように表示されます。
A列 B列
---------------
[13] [1]
[13] [2]

■手順2(ソートする)
以下でソートします。
並べ替え
 A列、値、降順
次に優先されるキー
 B列、値、昇順

ソートすると、このように並び変わってしまいます。
B列の昇順が反映されていません。何が原因でしょうか?

A列 B列
---------------
[13] [2]
[13] [1]

質問者からの補足コメント

  • すみません、環境を書いてませんでした。

    ■環境
    MS-Office Standard 2013
    Windows7

    また、かなり古いExcel2002でも同様の動作になることを確認しました。

      補足日時:2019/02/20 13:39

A 回答 (1件)

これは追及しだすとキリが有りません。



先ずエクセルは計算機処理なので、内部は全て2進数で現しています。
一方で目で見える表示は10進数表示で、かつ、有効桁数15桁表示です。

2進表現⇒10進表示の時、10進表示の16桁目からは0を表示します。

10/3 + 10/3 + 10/3 + 9/3 ①

10/3 + 9/3 + 10/3 + 10/3 ②

の場合、内部2進表現では精度の問題で②の方が極く僅かに大きいのです。
それを有効桁数15桁表示した場合には、違いを表現できないのです。
つまり、15桁目より小さい桁で差が出る、と言う事です。

これが、例えば有効桁数50桁表示くらいだとしたら、差が目で見て解る筈なんです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

自分も大昔ですが、浮動小数点や2進数の計算を勉強していた時期がありました。
もう殆ど忘れてしまいましたが、回答者様の話は分かります。

それで、浮動小数点とエクセルで検索し、以下方法を試したところ、正確にソートできるようになりました。
ヒントをありがとうございます。


Excel で浮動小数点演算の結果が正しくない場合がある
https://support.microsoft.com/ja-jp/help/78113/f …

方法 2: 表示桁数で計算
場合によっては、[表示桁数で計算する] オプションを使用して、丸め誤差による影響を回避できる場合があります。このオプションを使用すると、ワークシートの各数値が、表示されている値に強制的に変更されます。このオプションを有効にするには、次の手順を実行します。
Excel 2003 以前のバージョンでは、[ツール] メニューの [オプション] をクリックします。
[計算方法] タブの [表示桁数で計算する] チェック ボックスをオンにします。
Excel 2007 では、Microsoft Office ボタンをクリックし、[Excel のオプション]、[詳細設定] を順にクリックします。
[次のブックを計算するとき] セクションで目的のブックを選択し、[表示桁数で計算する] チェック ボックスをオンにします。
Excel 2013 および 2010 では、[ファイル]、[オプション]、[詳細設定] カテゴリを順にクリックします。
[次のブックを計算するとき] セクションで目的のブックを選択し、[表示桁数で計算する] チェック ボックスをオンにします。

お礼日時:2019/02/20 15:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!