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

Why do my float values lose precision and drop decimals? Example code below

本文关键字:小数 代码 我的 精度 为什么      更新时间:2023-10-16

我以前从未真正使用过浮动,我正在处理的当前项目需要它们。我遇到了一些奇怪的问题,这些问题是我几年前了解到的,但我已经忘记了为什么会发生这种情况。

我乘以或加上浮点数后的结果并不是应该的。

这是我的代码:

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

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

尝试:

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

每个程序员都应该知道浮点运算,或者为什么我的数字加不起来?

简而言之,实数是无限的,计算机不是。