次の方法で共有

エクセルの計算について

Anonymous
2018-03-29T00:04:53+00:00

エクセルの計算について質問します。

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 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-03-30T05:40:04+00:00

    善場様

    ありがとうございました。

    1.57%がたまたまマイナスだったために目に見えたということ、誤差のため無視をしてい数値だということなのですね。

    また別セルと直接書いた場合で誤差の出方が違うのですね。エクセルの仕様でこういう風なことがおきるとは思っていなかったので、大変勉強になりました。

    roundupなどで対応したいと思います。

    ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. sumz 177.8K 評価のポイント
    2018-03-29T15:45:14+00:00

    実数(浮動小数点数)を含む計算では、内部データ表現は2進数のため値により発生する誤差と、結果を整数に変換する関数の使い方によるためと思います。

    INT関数は、数値が正の場合と負の場合では異なってきます。

    例えば整数にする場合、0.001 は0になりますが、-0.001は-1になります。

    今回のような場合、計算による内部表現の誤差を丸めて整数化をするには、ROUND関数、切り上げ、切り捨てのROUNDUP、ROUNDDOWN関数などを用いるのが適切と思います。

    %値を別セルにした場合と、直接数値内に書いた場合の、どちらも同じ結果になります。

    関連の情報

    Excel で浮動小数点演算の結果が正しくない場合がある

    INT 関数

    ROUND 関数

    任意の小数点以下の桁数に数値を丸める

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-03-29T04:21:00+00:00

    投稿者です。

    -785-785はー1570でいい話でした。

    =int(100000*A1-1570) でー1になります。

    まぎらわしい書き方をして申し訳ありませんでした。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません