浮点型+类型转换(C/C++重点)

数据之间的相互转换也是重点

C 语言中除了整型外,另外一种数据类型就是浮点型,浮点型可以表示有小数部分的数据。
浮点型包含三种数据类型,
分别是单精度的
float 类型,双精度的 double 类型,和长双精度 longdouble 类型。


如:
#include <stdio.h>
main()
{
float x;
x=6.0;
x++;
printf("%f",x);
}
结果:x=7.000000(7位有效数字)

1 .单精度浮点型(float)  单精度浮点型(float )专指占用32位存储空间的单精度(single-precision )值。单精度在一些处理器上比双精度更快而且只占用双精度一半的空间,但是当值很大或很小的时候,它将变得不精确。当你需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。例如,当表示美元和分时,单精度浮点型是有用的。  这是一些声明单精度浮点型变量的例子:float hightemp,lowtemp;  2 .双精度型(double )浮点型  双精度型,正如它的关键字“double ”表示的,占用64位的存储空间。在一些现代的被优化用来进行高速数学计算的处理器上双精度型实际上比单精度的快。所有超出人类经验的数学函数,如sin( ),cos( ) ,tan()和sqrt( )均返回双精度的值。当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。





参与运算的表达式中存在 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.5F2.38F 同样的,如果希望数据是以精度更高的 longdouble参与运算,可以在常量后添加字符l或者L都可以,比如1.51245L2.38000L。建议使用大写L,因为小写l容易和数字1混淆。

若a、b都为float型,a+b肯定就是float 类型了, 如果运算的两个类型不一样,低类型自动转为高类型,
  从低到高依次为  char--int  --long--float---double


再举几个运算的表达式的例子,如下所示:

inti,j

floatm;

doublex;

i+ j  /*表达式运算结果是int类型*/

i+ m    /*表达式运算结果是float类型*/

i+ m +x   /*表达式运算结果是double类型*/

指数形式如下所示 ( e 或者 E 都可以 )

2.0e3  表示2000.0

1.23e-2  表示0.0123//

.123e2  表示12.3//注意!!!!!

1e-3 表示0.001

对于指数形式,有以下两点要求:

⑴ 字母e前面必须要数字

字母e的后面必须是整数


                                                                                                                                      类型转换


类型转换并不改变被转换变量的值!!




















c和c++都允许将一个整数值赋予一个浮点型值。这时候,浮点数小数点后为.00等
如:int i = 5;
float k = i;
cout<<k;
输出k = 5.0

反之,将一个浮点值赋予一个整型变量也是允许的,这时候会将浮点型的小数部分截去(注意,不是四舍五入!!)
如:
double i = 5.89 ;
int k = i ;
cout<<k;
 结果:k = 5

范例 -2】  综合应用数据类型和类型转换的。

01   #include <stdio.h>

02   #include <stdio.h>

03   int main(void)

04   {

05     inti;

06     double d;

07     char c='a';

08     printf("不同进制数据输出字符\'a\'\n");

09     printf("%u,0%o,0x%x\n",c,c,c);  /*十进制八进制十六进制*/

10     i=2;

11     d=2+c+0.5F;    /*隐式类型转换*/

12     printf("隐式数据类型转换%f\n",d);

13     i=d;   /*隐式类型转换,舍弃小数位*/

14     printf("隐式数据类型转换%d\n",i);

15     d=(int)1.2+3.9;   /*显式类型转换,1.2取整*/

16     printf("显式数据类型转换%f\n",d);

17     d=(int)(1.2+3.9);   /*显式类型转换,和取整*/

18     printf("显式数据类型转换%f\n",d);

19     return 0;

20   }



再举几个运算的表达式的例子,如下所示:

inti,j

floatm;

doublex;

i+ j  /*表达式运算结果是int类型*/

i+ m    /*表达式运算结果是float类型*/

i+ m +x   /*表达式运算结果是double类型*/




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值