0

私は普通の古い C で遊んでいます。単にペニーの数を計算し、特定の反復回数にわたって指数関数的に量を増やしています。プロセスの最後に、ドルとセントとして画面に表示したい多数のセント/ペニーがあります。

私の出力電流は次のようになります。

"You have 805306365 pennies"

新しい変数を float として定義して、この数値をドルに変換しようとしています。

float totalD = total / 100.00;

出力は を示しています8053063.50。この int の除算で 15 セントの損失が発生するのはなぜですか? それが役立つ場合は、「printf」で表示しようとしています:

printf("You have %.2f dollars", totalD);

セントを文字列に変換して、好きなように書式設定できることはわかっていますが、フロートがこれを行う理由について当惑しています。なぜこれが起こるのか、そしておそらくそれに対処する方法について誰かが私に洞察を与えることができますか?

4

3 に答える 3

2

このようにすると、運が良くなると思います:

printf("You have %d.%02d dollars", total/100,total%100);
于 2013-04-08T02:58:41.373 に答える
-1

long int または long long を使用してペニーを表すことを検討してください。float または double は、実行しようとしていることに適していません。StackOverflow に関するこのディスカッションを読むことをお勧めします。

于 2013-04-08T02:52:43.093 に答える