web-dev-qa-db-ja.com

大きな16進数でのこのExcelの動作は予想されますか?

あいまいな質問のタイトルで申し訳ありませんが、これをどのようにすればよいかわかりません。

次の数値をExcelセルに貼り付けると:

5000097208326954

として表示されます

5E+15

それはいいです。わかりました。ただし、機能バーを見ると、次のように表示されます。

5000097208326950

私がすることない理解する。この動作は、セルに配置する可能性のある以前のフォーマットとは無関係のようです。

これはExcel2003SP3にあります。

予想される微妙な動作が見当たらないのですか、それともバグですか?

3
Dancrumb

誰かがおそらくより良い説明と修正を伴うでしょうが、基本的にコンピュータは浮動小数点数や大きな整数を表すときに特定の量の有効数字しか保存しません。 Excel(少なくともデフォルト)では、数値の最初の15桁のみが表示され、残りは破棄されます。番号の末尾に数字を追加することで確認できます、f.ex。 5000097208326954123であり、これらの数字は5000097208326950000に丸められます。

補足として、おそらく 16進数 記数法と 科学的記数法 が混同されています

6
GummiV

Excelは、すべての計算を倍精度浮動小数点数として実行します。 (合計64バイナリビット)

これにより、10進数で約14〜15桁の有効桁数が得られます。

5000 097 208 326 954

は16桁です。これをExcelで行うと...

A1 = 5000097208326954

A2 = A1 +1

A3 = A2-A1

A3は0を表示します。

完全な開示:私はACMのメンバーであり、コンピューティングによるリスクについて一般の人々に伝える義務があります。それは私たちの行動規範にあります。

しないでください重要なものにはExcelを使用してください。

ポケット関数電卓を使用すると、より正確な回答が得られます。

ExcelはC/C++で記述されており、64ビットの数値を使用します。また、Microsoft浮動小数点ライブラリを使用して、sin、cos、expなどの関数を計算します。これらのライブラリは、同じサイズの数値で動作していても、科学的なライブラリと比較してかなり不正確です。

浮動小数点は単純なものには問題ありませんが、科学的な作業や深刻なエンジニアリングにはひどいものであり、不正確すぎます。数値を何度も加算および乗算する数値法は、15桁の精度がなくなると、浮動小数点で醜く速くなります。4回の乗算ごとに1桁です。

浮動小数点は財務作業に適していません(0.2は2進浮動小数点の無限の繰り返し数です)。したがって、0.2ドルを1000回追加すると、一部のお金が失われます。金融業界のプログラマーは、必要な場所で無限の精度の数値を使用し(紙に数値を書き込むのと同じように)、すべての四捨五入を合計してもお金が失われないように、特殊関数を使用してお金の計算を行います。

古い学校のプログラマーは、数学にFORTRANを使用しました。これは、あなたやIのように、10進数で数学を行います。ユーザーが数値法を実行することを期待しているため、ライブラリはFORTRANで非常に正確です。それが目的です。電卓は内部でも小数を使用します。

私は以前、Excelを使用してCプログラムの数学の丸めのバグを再現しました。

この方法で、計算がうまくいかないというきれいなグラフを取得できます。

3
Tim Williscroft

すでに指摘したように、Excelが数値を格納する場合、これは有効数字15桁の制限です。これがその値に従って何かを計算するために使用する必要のある数値ではなく、シリアル番号や製品コードなどの参照である場合、最良のオプションは、セルを(一般的なデフォルトではなく)テキストとしてフォーマットすることです。 )貼り付ける前に、すべての桁を保持します。これはまた、それが賢くなり、科学的記数法で「役立つ」ことを示すことを防ぎます。

もちろん、これが実際に16進数である場合(ただし、たまたま9を超える数字のない例を選択した場合)、間違いなく Excelでそれを数値として扱わないようにします。 a)10進数であると想定し、文字が含まれていると失敗するため。 b)これは、数値の大きさがさらに大きいことを意味し、10進数に変換すると、15桁をはるかに超えます。

2
AdamV

最後の桁が4ではなく0として表示されるのはなぜですか?

this リンクが答えを持っていると思います。計算仕様を見ると、最大数値精度は15桁です。 他の仕様を見ると、Excelはおそらく入力した数値の完全な値を保持しているように見えるので、数式で数値を使用すると、正しく計算されるはずです。

正直なところ、大学では有効数字のすべてが理解できなかったので、なぜExcelがこのように設定されたのかわかりませんでした。

This フォーラムは、必要に応じて、組み込みの制限を超えるためのポインタを提供する場合があります。

また、値がDECではなくHEXであると認識するように、Excelをどのようにフォーマットしますか?

2
Xantec

セルまたはすべてのセルを右クリック>セルのフォーマット>次のいずれかのフォーマットを選択します。

  • 数値(またはその変形):数値として認識する
  • テキスト:最良のオプション。左側に0を使用できる場合は、0が表示されるためです。

ええと、私はここでその解決策を見ることができませんでした-科学的記数法についてのいくつかの議論またはあなたの16進数についての起こり得るエラーだけです。

0
kokbira