博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言实型数据(浮点数)
阅读量:4297 次
发布时间:2019-05-27

本文共 1467 字,大约阅读时间需要 4 分钟。

实型数据也称为浮点数或实数。在C语言中,实数只采用十进制。
它有二种形式:十进制小数形式和指数形式。

实数的表示

1) 十进制数形式

由数码0~ 9和小数点组成。 例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均为合法的实数。


注意,必须有小数点。


2) 指数形式

由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:

    a E n(a为十进制数,n为十进制整数)

其值为 a*10
n
。如:

2.1E5 (等于2.1*10
5
)

3.7E-2 (等于3.7*10
-2
)

0.5E7 (等于0.5*10
7
)

-2.8E-2 (等于-2.8*10
-2
)


以下不是合法的实数:

345 (无小数点)

E7 (阶码标志E之前无数字)

-5 (无阶码标志)

53.-E3 (负号位置不对)

2.7E  (无阶码)


【例3-5】输出实数。
 
  1. #include
  2. int main(void){
  3. printf("%f\n ",356.);
  4. printf("%f\n ",356);
  5. printf("%f\n ",356.0);
  6. return 0;
  7. }
 3) 实数在内存中的存放形式

实数一般占4个字节(32位)内存空间。按指数形式存储。
实数3.14159在内存中的存放形式如下:



说明:
  • 小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。
  • 指数部分占的位数愈多,则能表示的数值范围愈大。

实型变量

实型变量分为:单精度(float型)、双精度(double型)和长双精度(long double型)三类。


在VC6.0中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

类型说明符 比特数(字节数) 有效数字 数的范围
float 32(4) 6~7 10-37~1038         
double 64(8) 15~16 10-307~10308
long double 128(16) 18~19 10-4931~104932
 
实型变量定义的格式和书写规则与整型相同。例如:
 
  1. float x,y; // x,y为单精度实型量
  2. double a,b,c; // a,b,c为双精度实型量

实数的舍入误差

由于实数是由有限的存储单元组成的,因此能提供的有效数字总是有限的。
如下例。


【例3-6】实数的舍入误差。
 
  1. #include
  2. int main(void){
  3. float a,b;
  4. a=123456.789e5;
  5. b=a+20;
  6. printf("a=%f\n",a);
  7. printf("b=%f\n",b);
  8. return 0;
  9. }
注意:1.0/3*3的结果并不等于1。


【例3-7】
 
  1. #include
  2. int main(void){
  3. float a;
  4. double b;
  5. a=33333.33333;
  6. b=33333.33333333333333;
  7. printf("a=%f\nb=%f\n",a,b);
  8. return 0;
  9. }

从本例可以看出:
  • 由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。
  • b 是双精度型,有效位为十六位。但VC6.0规定小数后最多保留六位,其余部分四舍五入。

注意:实型常数不分单、双精度,都按双精度double型处理。

转载地址:http://kxcws.baihongyu.com/

你可能感兴趣的文章
工作流中文乱码问题解决
查看>>
maven打包本地依赖包
查看>>
spring boot jpa 实现拦截器
查看>>
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
全面理解Java内存模型
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>