数据之间的相互转换也是重点
浮点型包含三种数据类型,
分别是单精度的 float 类型,双精度的 double 类型,和长双精度 longdouble 类型。
![](https://img-my.csdn.net/uploads/201204/10/1334046507_3804.png)
如:
#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( )均返回双精度的值。当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。
![](https://img-my.csdn.net/uploads/201204/10/1334046642_6537.png)
1 +1.5 + 1.23456789 /*表达式运算结果是double类型*/
1 +1.5 /*表达式运算结果是double类型*/
1 +2.0 /*表达式运算结果是double类型*/
1 + 2 /*表达式运算结果是int类型*/
若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类型*/
2.0e3 表示2000.0
1.23e-2 表示0.0123//
.123e2 表示12.3//注意!!!!!
1.e-3 表示0.001
对于指数形式,有以下两点要求:
⑴ 字母e前面必须要有数字
⑵ 字母e的后面必须是整数
类型转换
类型转换并不改变被转换变量的值!!
![](https://img-my.csdn.net/uploads/201204/10/1334047181_9604.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047218_9116.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047247_7560.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047267_7292.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047298_2345.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047470_8810.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047503_2226.png)
![](https://img-my.csdn.net/uploads/201204/10/1334047526_5835.png)
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
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类型*/