システムwiki

MS Excelの計算

ILR_560 受付中 最終更新日:2021-06-16 21:20

返信リスト(回答:5)

4 #
Andreas

B2:=ラウンド(MOD(A2,0.52)、14)

ドラッグダウンします.

この記事も読む:
浮動小数点演算はExcelで不正確な結果を与える可能性があります

応答4# ->にスキップ
5 #
JPRonse

こんにちはandreas、

これは答えの一部です.ファイルを見てください:

= mod(4,68; 0,52)は0,52を返し、そこで0.

N-D* INT(N/D)または4,68-0,52* INT(4,68/0,52)は0を返します.

私はそれがIEEE754問題であると思います.

Chip Pearsonでは、両方の数字は整数であるべきです.

応答5# ->にスキップ
1 #
joeu200

のみ
一致することによって.そして一般的に、疑わしいトリックのためだけに
Excelは、バイナリ算術残差を隠すために矛盾して実装しています.
いくつかの状況.

たとえば、A145の5.72で、= A145-0.52* INT(A145/0.52)は正確にゼロ(0.00e + 00)を返します.

しかし= a145-0.52* int(A145/0.52)= 0 false(!)はfalse(!)を返します

合計(A145、-0.52* INT(A145/0.52))は、ほとんどゼロではなく、約-8.88E-16です.

the
違いは、Excelが最後の減算(またはの追加)を扱う疑わしい方法です.
対向的署名されたオペランド)Form= Expression-x.

応答5# ->にスキップ
3 #
Andreas

正しい!

=ラウンド(MOD(4.68×100,0.52×100)/100,14)

見てくれてありがとう.

アンドレアス

応答3# ->にスキップ
2 #
joeu200

JPがURLを提供していないため、Chipが書いたのかわかりません.

しかし、点は(であるべきです):整数のmod(2 ^ 53 [*])のmodはMOD結果の丸めを必要としません.

だから私たちは書くべきです:

= mod(ラウンド(A249* 100,2)、52)/100

A249は9.88です.

SUM(9.88* 100、-988)が正確にゼロでないため、A249* 100を明示的にラウンドしなければならない(0.00e + 00).

一般的に、それが正確な整数ではない場合は、除数を明示的に丸める必要があります.

(偶然によると、0.52×100は正確に52です.)


-

[*] Re:2 ^ 53以下の整数のmod.Excel 2007以前の2 ^ 27未満.Excel 2010のversionについては2 ^ 41未満です.119083 KB 119083では、私はもう同等のMSFTの資料を見つけることができません.