データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
善場様
ありがとうございました。
1.57%がたまたまマイナスだったために目に見えたということ、誤差のため無視をしてい数値だということなのですね。
また別セルと直接書いた場合で誤差の出方が違うのですね。エクセルの仕様でこういう風なことがおきるとは思っていなかったので、大変勉強になりました。
roundupなどで対応したいと思います。
ありがとうございました。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
エクセルの計算について質問します。
Win7エクセル2010、Win10エクセル2016
=int(100000*1.57%-785-785) と計算すると答えは0になります。
しかし A1セルに1.57%と入力し、=int(100000*A1-785-785)とするとー1となってしまいます。
=(100000*A1-785-785)とすると-0.0000000000002273736754432320000・・・となります。
1.57%をセル参照にした場合におきるようです。
1.58%や1.59%ではおきていません。
intや()をつけない場合は0になるのですが、計算結果が正しいのかどうか不安です。
原因がおわかりになる方がいらっしゃったら、教えてください。よろしくお願いします。
データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
善場様
ありがとうございました。
1.57%がたまたまマイナスだったために目に見えたということ、誤差のため無視をしてい数値だということなのですね。
また別セルと直接書いた場合で誤差の出方が違うのですね。エクセルの仕様でこういう風なことがおきるとは思っていなかったので、大変勉強になりました。
roundupなどで対応したいと思います。
ありがとうございました。
実数(浮動小数点数)を含む計算では、内部データ表現は2進数のため値により発生する誤差と、結果を整数に変換する関数の使い方によるためと思います。
INT関数は、数値が正の場合と負の場合では異なってきます。
例えば整数にする場合、0.001 は0になりますが、-0.001は-1になります。
今回のような場合、計算による内部表現の誤差を丸めて整数化をするには、ROUND関数、切り上げ、切り捨てのROUNDUP、ROUNDDOWN関数などを用いるのが適切と思います。
%値を別セルにした場合と、直接数値内に書いた場合の、どちらも同じ結果になります。
関連の情報
投稿者です。
-785-785はー1570でいい話でした。
=int(100000*A1-1570) でー1になります。
まぎらわしい書き方をして申し訳ありませんでした。