dポイントプレゼントキャンペーン実施中!

C言語で

int Ans;

Ans = 180 * 1.4;

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

対策方法ご存知の方教えてください。

A 回答 (3件)

プログラムには誤差が生じます.


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

int Ans;


int a = 180;
double b = 1.4;

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

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

double→intの場合、小数部が切り捨てられる為
251.999999999999999 が 251になります。
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!