实型变量

1.实型数据在内存中的存放形式

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

+.314159+1

数符           小数部分                        指符        指数

小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。

指数部分占的位数愈多,则能表示的数值范围愈大。

实际上,小数部分是一个二进制纯小数,指数部分以补码存放。

2.实型变量的分类

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

在Turbo C中单精度型占4个字节(32位)内存空间,其中数符1位,小数部分23位,指符1位,指数7位,所以其数值范围为3.4E-38~3.4E+38,只能提供6~7位有效数字。双精度型占8 个字节(64位)内存空间,其中数符1位,小数部分23位,指符1位,指数10位,其数值范围为1.7E-308~1.7E+308,可提供15~16位有效数字。

表2.2

类型说明符比特数(字节数)有效数字数的范围

Float32(4)6~710-37~1038

Double64(8)15~1610-307~10308

long double128(16)18~1910-4931~104932

3.实型变量的定义形式及初始化与整型相同。

类型说明符:float(单精度实型), double(双精度实型)。

例如:

float x=1.27 , y=3.5 4;        /*x,y为单精度实型变量,且初值为:1.27和3.54*/

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

在计算机中,存放浮点数一般采用定点数和浮点数两种表示方法。C语言中采用的是浮点数表示法,以Turbo C中的float型的7.8125×10-2为例,其数据存储的格式如下

01010000000000000000000010000011

数符        小数部分(23位)                指符   指数(7位)

即二进制的0.101×10-11,转化为十进制为0.625×2-3,即7.8125×10-2。

对于double型的数据小数部占53位(包括数符一位),指数部分占11位(包括指符一位)。

对于long double型的数据小数部分占113位(包括数符一位),指数部分占15位(包括指符一位)。

4.实型数据的舍入误差

实型变量也是由有限的存储单元组成的,能提供的有效数字是有限的。这样就会存在舍入误差。看一个例子:

【例2.8】一个较大实数加一个较小实数。

main()

{

float x=7.24356E10, y;

y=x+54;

printf("x=%e\n",x);

printf("y=%e\n",y);

}

程序执行的结果为:

x=7.24356E10

y=7.24356E10

这里x和y的值都是7.24356E10,显然是有问题的,原因是由于float只能保留6~7位有效数字,变量y所加的54被舍弃。因此由于舍入误差的原因,进行计算时,要避免一个较大实数和一个较小实数相加减。

5.实型数据的溢出

【例2.9】

main()

{

float a,b,c,d;

a=1.2E33;

b=0.5E-22;

c=0.25E-21;

d=a/b;

d=d*c;

printf("c=%f\n ",d);

}

结果会出现

Floating point error: Overflow

这是由于程序中a/b的运算的结果超出了float型能表示的范围产生溢出。所以在使用中应避免直接用一个较大的数除以一个较小的数。可以将程序的计算部分d=a/b; d=d*c; 改为:

d=a*c; d=d/b; 或 d=a/b*c;

以避免这种情况的发生。也许有人会提出d=a/b*c为什么不产生溢出哪?其原因是,在Turbo C中float型数据在计算时要先转换为double型数据,计算后再转换为float型数据赋给float变量d。

2.4.3实训 使用实型数据

实训目的:正确书写实型常量,合理选择实型变量存放数据

实训内容:

1、已知三角形的底为2.8cm,高为4.3cm,求三角型的面积。

编程如下:

main()

{float d=2.8,h=4.3, s;

s=d*h/2;

printf(“s=%f”,s);

}

程序运行的结果为:

s=6.020000

2、将摄氏温度27.5度转换为华氏温度。转换公式为

编程如下:

main()

{

float f=27.5,c;

c=5.0/9*(f-32);

printf(“c=%f”,c);

}

程序运行的结果为:

c=-2.500000

3、上机验证1.0/7*7的结果是否为1.0。为什么?

C语言误差用什么变量,C语言-实型变量相关推荐

  1. c语言静态函数调用静态变量_C语言中的静态变量和函数

    c语言静态函数调用静态变量 C中的静态变量 (Static Variables in C) Basically, when static variables are declared, they cr ...

  2. c语言左值为变量,C语言中左值和右值的区别

    在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出" left operand must be l-value " 即左操作数必须为左值!,今天我们 ...

  3. c语言中有布尔型变量,C语言的布尔型(bool)

    Technorati 标签: C,布尔,boolean,_Bool,stdbool.h 也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为"_Bool&qu ...

  4. c语言里有bool变量,C语言中有没有bool类型

    以下是引用lzxm160在2007-11-9 12:35:05的发言: C语言中有没有bool类型 要是没有,函数要返回 bool类型怎么办,有int代替么 完全没有必要使用 bool,int 绝对可 ...

  5. c语言定义禁止优化变量,c语言防止优化

    c语言防止优化 编译器编令里有设置,通置,你可以要求 不优化,以要求种优化. 具体选项有哪些,要查自己编译器的帮助文件. 例如,MS VC++ 6.0 编译器编 优化选项: /O1:优化使产生的可执行 ...

  6. c语言中常见的变量,C语言中的变量详解

    先说说变量的作用域,比如,在函数中,形参变量只是在被调用期间才分配内存单元,调用结束立即释放.这就说明形参变量只有在函授内才是有效的,离开该函数就不能再使用了. 这种变量有效性的范围称为变量的作用域. ...

  7. C语言dev查看调试变量,C语言程序设计-c4_C语言上机_Dev调试.doc

    Dev-C++ 调试方法简明图文教程 来源: 蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:精品 发布于2006-12-07 22:43 /html/1/15/0612/181.htm ...

  8. c语言引用性间接变量,c语言取地址和间接引用

    #include int main() { int a=10; int b; b=a; //取地址 //地址符+变量名 &a; printf("%p\n",&a); ...

  9. c语言不用第三变量,C语言中几种不用第三变量交换两值的方法

    int main() { int a=3,b=4; int *p=(int *)malloc(sizeof(int)); *p=3; int *q=(int *)malloc(sizeof(int)) ...

  10. suma在c语言中表示什么变量,C语言题

    t++; } a[i]=-/0?; } 96: 第96题请编写函数fun,其功能使:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和. 答案: double fun(double x ...

最新文章

  1. IT服务管理(ITSM):IT行业变革的思考(4)
  2. 16个不错的 git 别名
  3. C++ 创建对象时带括号和不带括号的区别
  4. linux的lsm--TCB组成部分的新视角
  5. linux++命令+q,linux 命令 - osc_panqs2jh的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. [zz]linux下DHCP服务器配置(使用Ubuntu LTS 8.04)
  7. js与c语言效率_JavaScript比c语言的性能差了多少?
  8. 秒后面的单位是什么_单位与国际单位制是如何由来的?
  9. python中 numpy转list list 转numpy
  10. IDEA运行VUE npm install报错:chromedriver@2.27.2 install: node install.js
  11. 比较简单的解决键盘遮挡文本框的简单方法
  12. Highway Networks
  13. 最完整Android Studio插件整理 (转)
  14. 乘着创新的浪潮:协同运输机器人编队的基于模型的开发实施方案
  15. TTL电平和CMOS 电平
  16. 计算机配件价格上涨,显卡涨价风声再起 PC配件涨价什么时候是个头
  17. rat linux安装u盘,美加狮RAT2鼠标驱动
  18. 编程术语晦涩_晦涩的编程语言的乐趣
  19. Redhat Linux 8.3 安装方法
  20. 互联网周刊:深度分析云计算

热门文章

  1. poj 3709 斜率优化
  2. 发稿猫:5步分析钟薛高、东鹏特饮新品牌如何做营销
  3. 华为路由器a1怎么设置虚拟服务器,华为路由器a1 lite该怎么设置? | 192.168.1.1登陆页面...
  4. python计算机视觉 相机标定--张正友棋盘格标定法
  5. u检验中的查u界值表_《医学统计学》
  6. VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path
  7. 推荐6款办公软件,好用还免费,效率翻倍
  8. matlab的colorbar取对数
  9. 2022年,GIS专业要不要转战IT?
  10. SuperMap地图系列:坐标系的那些事