-PR-
解決済み

1.4なのに

  • すぐに回答を!
  • 質問No.972867
  • 閲覧数34
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 10% (3/29)

C言語で

int Ans;

Ans = 180 * 1.4;

と計算すると251になるんですけど。
なんでですか?
1.4のところにカーソルを合わせると
1.4=1.399999999999と表示されるのですけど
なんでですか?

対策方法ご存知の方教えてください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル12

ベストアンサー率 22% (162/733)

プログラムには誤差が生じます.
それが原因です.
1度検索エンジンで「丸め」と記述して検索をかけてみてください.
いろいろのっています.
わたしは,自分でプログラム(小数第3位を丸め込んだり,四捨五入したり…)を組んでいます.

その他の回答 (全2件)

  • 回答No.2
レベル13

ベストアンサー率 23% (362/1544)

C言語の int型はどの範囲までの情報を確保できるか調べてみましょう。


  • 回答No.3
レベル13

ベストアンサー率 52% (430/816)

int Ans;
int a = 180;
double b = 1.4;

Ans = (int)((double)a * b);

実際にはこのようにキャストされています。
対策方法というか、何故そうなるのかを理解したほうが良いと思います。
「キャスト」「浮動小数点」「IEEE754」
あたりのキーワードを調べてみてください。

double→intの場合、小数部が切り捨てられる為
251.999999999999999 が 251になります。
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

-PR-
ページ先頭へ