一道C程序题如何有效处理数据丢失的问题,我的程序还是很不严谨啊!!实在没辙了,不知该怎么改,求大神规范,感激不尽!
问题:失分[-20],未实现:读入本金时,只能使用int型或本金较大时计算正确(未损失数据)
程序如下:
#include<stdio.h>
int main(void)
{
int benjin;
int x;
float lixi;
printf("Please input benjin,cunqi: ");
scanf("%d,%d",&benjin,&x);
switch(x)
{
case 1:lixi=(float)((benjin*1.0)*0.0315*(x*1.0));break;
case 2:lixi=(float)(benjin*1.0*0.0363*x*1.0);break;
case 3:lixi=(float)(benjin*1.0*0.0402*x*1.0);break;
case 5:lixi=(float)(benjin*1.0*0.0469*x*1.0);break;
case 8:lixi=(float)(benjin*1.0*0.0536*x*1.0);break;
default :printf("Error!");
}
printf("\nlixi = %.2fyuan",lixi);
} c float int
[解决办法]
float改成double试试
[解决办法]
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
float有效数字6位,double有效数字15位。