ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言基本数据:实型

2021-12-03 22:35:40  阅读:194  来源: 互联网

标签:基本 实数 double C语言 有效数字 实型 printf 十进制


转自:微点阅读(www.weidianyuedu.com)微点阅读 - 范文大全 - 免费学习知识的网站

实型数据也称为浮点数或实数。在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*10n。如:

2.1E5 (等于2.1*105)

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

0.5E7 (等于0.5*107)

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

以下不是合法的实数:

345 (无小数点)

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

-5 (无阶码标志)

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

2.7E  (无阶码)

【例3-5】输出实数。#include <stdio.h>

int main(void){

printf("%f\n ",356.);

printf("%f\n ",356);

printf("%f\n ",356.0);

return 0;

}

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

实型变量定义的格式和书写规则与整型相同。例如:float x,y; // x,y为单精度实型量

double a,b,c; // a,b,c为双精度实型量

实数的舍入误差

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

【例3-6】实数的舍入误差。#include <stdio.h>

int main(void){

float a,b;

a=123456.789e5;

b=a+20;

printf("a=%f\n",a);

printf("b=%f\n",b);

return 0;

}

注意:1.0/3*3的结果并不等于1。

【例3-7】#include <stdio.h>

int main(void){

float a;

double b;

a=33333.33333;

b=33333.33333333333333;

printf("a=%f\nb=%f\n",a,b);

return 0;

}

从本例可以看出: 由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。

b 是双精度型,有效位为十六位。但VC6.0规定小数后最多保留六位,其余部分四舍五入。

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

标签:基本,实数,double,C语言,有效数字,实型,printf,十进制
来源: https://blog.csdn.net/asd3331380/article/details/121672176

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有