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

时间:2012-02-29 21:20:18

标签: 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");

}

2 个答案:

答案 0 :(得分:7)

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

尝试:

cout << setiosflags(ios::fixed) << setprecision(2) << x;

答案 1 :(得分:4)