为什么我的浮点值会丢失精度并丢弃小数?示例代码如下

CRE*_*REW 2 c++ math floating-point-precision

我之前从未使用过漂浮物,而我正在进行的当前项目需要它们.我得到了几年前我学到的奇怪问题,但却忘记了为什么会这样.

乘以或添加浮点数后的结果不是它们应该的结果.

这是我的代码:

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");

}
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 7

您的问题不是小数精度 - 它是用于输出值的格式.

尝试:

cout << setiosflags(ios::fixed) << setprecision(2) << x;
Run Code Online (Sandbox Code Playgroud)

  • +1:是的,在这种情况下,这是正确的答案. (2认同)