首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编写3函数,转换解决办法

2012-03-12 
编写3函数,转换#include stdio.hvoidmain(){voidmax1()voidmax2()voidmax3()charzido{fflush(stdin)

编写3函数,转换
#include <stdio.h>
void   main()
{
void   max1();
void   max2();
void   max3();
char   zi;
do
{
fflush(stdin);
printf( "英尺转英寸(输入c),英寸转厘米(输入l),厘米转米(输入m).\n ");
scanf( "%c ",&zi);
if(zi== 'c '||zi== 'C ')
max1();
else   if(zi== 'l '||zi== 'L ')
max2();
else   if(zi== 'm '||zi== 'M ')
max3();
else
printf( "请重新输入\n ");
}while((zi!= 'c '||zi!= 'C ')||(zi!= 'l '||zi!= 'L ')||(zi!= 'm '||zi!= 'M '));
}
void   max1()
{
float   a,b;
printf( "英尺: ");
scanf( "%f ",&a);
b=a*12;
printf( "%.2f英尺=%.2f英寸\n ",a,b);
}
void   max2()
{
float   a,b;
printf( "英寸: ");
scanf( "%f ",&a);
b=a*2.54;
printf( "%.4f英寸=%.4f厘米\n ",a,b);
}
void   max3()
{
float   a,b;
printf( "厘米: ");
scanf( "%f ",&a);
b=a/100;

printf( "%.3f厘米=%.3f米\n ",a,b);
}
有一个警告1   warning。
warning   C4244:   '= '   :   conversion   from   'double '   to   'float ',   possible   loss   of   data
这个的意思是把double变float吗?为什么要变呢。
在之前的一道题中也是这样的警告。我就改了
例如float的时候得67.999999
改为double的是就变为68.000000。了
这个是为什么呢?
谢谢您了



[解决办法]
因为C/C++中,浮点数默认是double型的,当将一个double型的浮点数赋给一个float型的浮点数,可能会损失精度,比如有的编译器double型用8个字节表示,而float型却只有4个字节。
float a;
a = 5.3; // 编译器会把这里的5.3当成double型,所以给a赋值的时候就会有一个警告
a = 5.3f; // 如果在浮点数后面加上f,表示该浮点数是单精度的,所以这里赋值就不会有警告。

热点排行