以下代码未将总和打印为零,为什么?

时间:2019-06-28 10:32:32

标签: c++ floating-point

这是我的代码:

#include <bits/stdc++.h>
using namespace std;
signed main(){
int t=1;
while(t--){ 
    int n;
    cin>>n;
    double a[n];
    double sum=0;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        if(a[i]>=0)
            {
                double d=a[i]-floor(a[i]);
                //cout<<d<<endl;
                sum+=d;
                //cout<<"sum1:"<<sum<<endl;
            }
        else
        {
            double d=(a[i]-ceil(a[i]));
            //cout<<d<<endl;
            sum+=d;
            //cout<<"sum2:"<<sum<<endl;
        }
    }
    cout<<sum<<endl;
}
    return 0;
}

输入时     4     4.58413     1.22491     -2.10517     -3.70387 我的代码显示总和为-4.44089e-016,但总和的值应为0。 为什么会发生?

0 个答案:

没有答案