《浮点型类型转换优秀PPT.ppt》由会员分享,可在线阅读,更多相关《浮点型类型转换优秀PPT.ppt(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、浮点型类型转换你现在浏览的是第一页,共16页浮点型浮点型C 语言中除了整型外,另外一种数据类型就是浮点型,浮点型可以表示有小数部分的数据。浮点型包含三种数据类型,分别是单精度的float类型,双精度的double类型,和长双精度long double类型。你现在浏览的是第二页,共16页浮点型浮点型 (图表图表)浮点型floatdoublelong double类型型位数位数有效数字有效数字取取值范范围float3267-1.4e-453.4e38double641516-4.9e-3241.8e308long double1281819你现在浏览的是第三页,共16页浮点型浮点型参与运算的表达式
2、中存在double类型,或者说,参与运算的表达式不是完全由整型组成的,在没有明确的类型转换标识的情况下(将在下一小节中讲解),表达式的数据类型就是double类型。例如:1+1.5+1.23456789/*表达式运算结果是double类型*/1+1.5/*表达式运算结果是double类型*/1+2.0/*表达式运算结果是double类型*/1+2/*表达式运算结果是int类型*/例子当的1.5,编译器默认它为双精度的double类型,精度高占据存储空间大,如果只希望以单精度float类型运行,可以在常量后添加字符f或者F都可以,比如1.5F,2.38F。同样的,如果希望数据是以精度更高的lon
3、g double参与运算,可以在常量后添加字符l或者L都可以,比如1.51245L,2.38000L。建议使用大写L,因为小写l容易和数字1混淆。你现在浏览的是第四页,共16页浮点型浮点型再举几个运算的表达式的例子,如下所示:int i,j;float m;double x;i+j/*表达式运算结果是int类型*/i+m /*表达式运算结果是float类型*/i+m+x/*表达式运算结果是double类型*/你现在浏览的是第五页,共16页浮点型浮点型指数形式如下所示(e或者E都可以)2.0e3表示2000.01.23e-2表示0.0123.123e2表示12.31e-3表示0.001对于指数形
4、式,有以下两点要求:字母e前面必须要有数字 字母e的后面必须是整数浮点型小数形式指数形式你现在浏览的是第六页,共16页类型转换类型转换1 隐式转换2 显式转换你现在浏览的是第七页,共16页类型转换类型转换计算过程中,如果遇到不同的数据类型参与运算该怎么办,是终止程序还是转换类型后继续运算。编译器采取第二种方式,如果能够转换成功,程序继续运算,如果转换失败,程序报错同时终止运行。数据类型有两种转换方式,分别隐式转换和显式转换。你现在浏览的是第八页,共16页隐式转换隐式转换C语言中设定了不同数据参与运算时的转换规则,编译器会在悄无声息中进行数据类型的转换,进而计算出最终结果,这就是隐式转换。你现在
5、浏览的是第九页,共16页隐式转换隐式转换int i;i=2+A;先计算“=”号右边的表达式,字符型和整型混合运算,按照数据类型转换先后顺序,把字符型转换为int类型65,然后求和得67,最后把67赋值给变量i。double d;d=2+A+1.5F;先计算“=”号右边的表达式,字符型、整型和单精度float类型混合运算,因为有浮点型参与运算,“=”右边表达式的结果一定是double类型,按照数据类型转换顺序,把字符型转换为类型65.0,2转换为2.0,1.5F转换为1.5,最后把双精度浮点数68.5赋值给变量d。你现在浏览的是第十页,共16页隐式转换隐式转换上述情况都是有低精度类型向高精度类型
6、的转换,如果逆向转换,可能会出现丢失数据的危险,编译器会以警告的形式给出提示。例如:int i;i=1.2;浮点数1.2舍弃小数位后,把整数部分1赋值给变量i。如果i=1.9,运算后变量i的值依然是1,而不是2。注注 意意:把浮点数转换为整数,直接舍弃小数位。你现在浏览的是第十一页,共16页隐式转换隐式转换【范例范例-1】整型和浮点型数据类型间的隐整型和浮点型数据类型间的隐式类型转换。式类型转换。01#include 02 int main(void)03 04 int i;05 i=1+2.0*3+1.234+c-A;/*混合运算*/06 printf(%dn,i);/*输出i*/07 re
7、turn 0;08 你现在浏览的是第十二页,共16页显式转换显式转换隐式类型转换编译器是会产生警告的,提示程序存在潜在的隐患。如果非常明确的希望转换数据类型,这就需要用到显式类型转换了。显式转换格式如下所示:(类型名称)变量或者常量或者(类型名称)(表达式)你现在浏览的是第十三页,共16页显式转换显式转换例如,需要把一浮点数,以整数的形式使用printf()函数输出,怎么办?就可以调用显示类型转换。float f=1.23;printf(%dn,(int)f);可以得到输出结果1,没有因为调用的printf()函数格式控制列表和输出列表前后类型不统一导致程序报错。继续分析上例,显示类型转换只是
8、把f小数位直接舍弃,输出了整数部分,变量f的值和数据类型都没有改变,依然是float类型1.23,可以再次输出结果进行查看。printf(%fn,f);输出结果是:1.230000你现在浏览的是第十四页,共16页显式转换显式转换再看下面的例子,分析结果是否相同。例如float f1,f2;f1=(int)1.2+3.4;f2=(int)(1.2+3.4);printf(f1=%f,f2=%f,f1,f2);输出结果:f1=4.4,f2=4.0显然结果是不同的,原因是f1只对1.2取整,相当于f1=1+3.4,而f2是对1.2和3.4的和4.6取整,相当于f2=(int)4.6。你现在浏览的是第
9、十五页,共16页综合应用综合应用类型转换类型转换【范例范例-2】综合应用数据类型和类型转换的。综合应用数据类型和类型转换的。01#include 02#include 03 int main(void)04 05 int i;06 double d;07 char c=a;08 printf(不同进制数据输出字符an);09 printf(%u,0%o,0 x%xn,c,c,c);/*十进制八进制十六进制*/10 i=2;11 d=2+c+0.5F;/*隐式类型转换*/12 printf(隐式数据类型转换%fn,d);13 i=d;/*隐式类型转换,舍弃小数位*/14 printf(隐式数据类型转换%dn,i);15 d=(int)1.2+3.9;/*显式类型转换,1.2取整*/16 printf(显式数据类型转换%fn,d);17 d=(int)(1.2+3.9);/*显式类型转换,和取整*/18 printf(显式数据类型转换%fn,d);19 return 0;20 你现在浏览的是第十六页,共16页
限制150内