2

これまでフロートをあまり使用したことがなく、現在取り組んでいるプロジェクトではフロートが必要です。何年も前に学んだ奇妙な問題が発生していますが、なぜこれが起こるのか忘れてしまいました。

フロートを乗算または追加した後の結果は、本来あるべきものではありません。

これが私のコードです:

void main ()
{
    //Example 1 - ERROR
    float a=16937.6;
    float b=112918;
    float total=b+a;
    cout<<total<<endl; //Outputs 129896 - rounds up and loses decimal (129855.6)

    //Example 2 - Error
    float c=247.82;
    float d=9995.2;
    float total2=c+d;
    cout<<total2<<endl; //Outputs 10243 - loses all decimals (10243.02)
    system ("pause");

}
4

2 に答える 2

7

問題は小数の精度ではなく、値を出力するために使用される形式です。

試す:

cout << setiosflags(ios::fixed) << setprecision(2) << x;
于 2012-02-29T21:26:43.517 に答える
4

すべてのプログラマーが浮動小数点演算について知っておくべきこと、または数値が加算されないのはなぜですか?

つまり、実数は無限ですが、コンピューターはそうではありません。

于 2012-02-29T21:22:32.067 に答える