Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
212.4567-212.6563の結果のTRUNC(小数点6桁)
投稿日時: 17/11/27 19:21:24
投稿者: TS_SAN

初めまして。お世話になります。
 
A1に[212.4567]
B1に[212.6563]
 
C1=B1-A1
結果は[0.1996]なのですが、
 
D1=TRUNC(C1,6)の結果が[1.99599]になるのは何故?
(他のデータと合わせる為、ここで結果を6桁で表示させたい。以降切り捨て)
 
この様な結果になる理由さえわかれば十分です。
よろしくお願いします。

回答
投稿日時: 17/11/27 20:15:59
投稿者: WinArrow
投稿者のウェブサイトに移動

>D1=TRUNC(C1,6)の結果が[1.99599]になるのは何故?
何か間違えていませんか?
 
よく確認してみてください。

回答
投稿日時: 17/11/27 22:20:48
投稿者: Mike

TS_SAN さんの引用:
C1=B1-A1
結果は[0.1996]なのですが、
D1=TRUNC(C1,6)の結果が[1.99599]になるのは何故?

「結果は[0.1996]なのです」がチト事情が異なります。
セル C1 を[コピー]して何処かの空きセルに[値の貼り付け]をしてみてください。
0.199599999999975
などとなりませんか?
浮動小数点問題などと、難しいことを仰るヤカラが多いけど、パソコンは小数点の計算に弱いとだけ覚えておいてください。そこで私の常套手段は「十分に小さい桁数で四捨五入しろ」です。
「0.1996」は小数点以下4桁なので、この場合はその2倍の小数点以下8桁で四捨五入しておくのです。
つまり、C1 の式を =ROUND(B1-A1,8) としてみて、「D1=TRUNC(C1,6)の結果」を眺めてください。

回答
投稿日時: 17/11/27 22:53:37
投稿者: Mike

Mike さんの引用:
パソコンは小数点の計算に弱い
その問題を(極力)避ける手段をご紹介。
A2: =A1*10000 此れを右隣にオートフィル
C2: =B2-A2
D2: =C2/10000 あるいは =TRUNC(C2/10000,6) あるいは =TRUNC(C2,6)/10000

投稿日時: 17/11/28 06:44:59
投稿者: TS_SAN

Mikeさん、ありがとうございます!
スッキリしました!