• ベストアンサー

1.4なのに

C言語で int Ans; Ans = 180 * 1.4; と計算すると251になるんですけど。 なんでですか? 1.4のところにカーソルを合わせると 1.4=1.399999999999と表示されるのですけど なんでですか? 対策方法ご存知の方教えてください。

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

  • ベストアンサー
回答No.1

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

その他の回答 (2)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

int Ans; int a = 180; double b = 1.4; Ans = (int)((double)a * b); 実際にはこのようにキャストされています。 対策方法というか、何故そうなるのかを理解したほうが良いと思います。 「キャスト」「浮動小数点」「IEEE754」 あたりのキーワードを調べてみてください。 double→intの場合、小数部が切り捨てられる為 251.999999999999999 が 251になります。

回答No.2

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

関連するQ&A

専門家に質問してみよう