某系统在统计收支时发现应收与实收出现误差。经检查发现采用了不同的计帐方式:应收帐是根据系统计算而得的结果,而实际收缴时按四舍五入方式以分为单位进行了收缴。请你编写一个程序,用两个实数的相加操作来解释误差产生的原因。
要求:第一个输出相加后的真实值,另一个先进行四舍五入精确到分(即0.01元)后再统计,最后计算其中的误差,输出误差的绝对值。
输入格式:
输入两个实数A,B。
输出格式:
第一行输出A+B的真实值(结果保留两位小数)
第二行输出A、B进行四舍五入后再相加后的值。
为了保证输出的美观,每个实数占15位,A为左对齐,B为右对齐,A+B的结果为左对齐。
第三行输出真实值与四舍五入后的误差的绝对值,输出格式为dev:误差值(按实际输出即可)
输入样例:
123456.345,4.896
输出样例:
123456.345000 + 4.896000=123461.24
123456.35 + 4.90=123461.25
dev:0.009000
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <math.h>
int main()
{
double a,b;
double c=0.00,d=0.00,e=0.00,f=0.00,g=0.00;
scanf("%lf,%lf",&a,&b);
c=a+b;
e=round(a*100)/100.0;//对a四舍五入
d=round(b*100)/100.0;//对b四舍五入
f=e+d;
printf("%-15.6lf+%15.6lf=%-15.2lf\n",a,b,c);
printf("%-15.2lf+%15.2lf=%-15.2lf\n",e,d,f);
g=f-c;
if(g<0)//取绝对值
{
printf("dev:%.6lf",-g);
}
else
{
printf("dev:%.6lf",g);
}
return 0;
}
新手代码,有点冗长。欢迎讨论!