下载  >  开发技术  >  C  > C语言浮点数探析

C语言浮点数探析 评分:

C语言浮点数探析
四、浮点数的运算 eL CA WINDOWS\syste i=1.00000 浮点缴的计算总是充满了陷阱。因为浮点数的精度 100000 1:1.20e0⊙0 有限,所以在做四则运算的时候,低位很可能在过程中 130600 被舍弁。例如下面这段程序: 1-14 i:1.5000 1=1.600000 #include <stdio. h> 1.70e09 1.30 i:1.90e00 按任意键绊续 void maino 程序分析:i的值从1.0,1.1,1.2..一直取到2.0。 float p =7.1f; 但运行结果显然与上面分析的不一样。为何没有2.0 int f =(int)(p*100) 呢?程序中循环的条件是ⅸ=2.0,从运行结果来看,当 printf( %dIn",f); i-1.900000再加1之后,i的值应该大于2.0,然后循环 退出。把程序改一下,看一下以上分析是否正确。修改 运行结果为 以后的程序和运行结果如下所示 CA: C: \WINDOWS\system3 #include <stdio h 79 void main( 请任意键继续 float i: 结果广不是我们所想像的710,而是709。这个数 for(i=1.0;<=2.0i+=0.1) 在化为10进制整数的时候,由于不可能达到 printf("i=%.10f\", i) 7.1(7.099…),所以乘以100后截取了前面的值709 printf("i=%.10f\n",i 解决此问题的其中一个方法是提高精度:把单精度改成prin("2.0到内存中的值为%.10n,2.0) 双精度 五、浮点数应用中的问题及解决方法 CA C: \WINDOWS\system32\cmd.ex 浮点数运算存在精度方面、比较方面以及舍入误差 1=1 eaoe90e90e i=1.100000238 等方面的问题,使用浮点数的时候一定要注意由于数据 =1.2Gp@G47T 类型之间的转换和精度限’,很可能与答案有很大的偏 1=1.30@715 主1,4eep954 差 1=1.5000001192 =1.6gee1431 例3:浮点数的比较,程序和运行结果如卜所示: i=1.7a0601669 1,8a190 #include <stdio.h> i=1.90e602146 i=2.080602384 void maino 0午到内中的值为:2 请按仨意键继续 由上面的运行结果可以看出:i由一个小于2.0值 for(i=1.0;<=20i+=0.1) 加上0.1之后得到一个大于2.0的值,所以最终不可能 printf("i=%fin", i) 输出2.0这个值。通过实验证明:把i的类型变为 double 类型、使用绝对误差的方法(fabs(i-2.0)1e-6)这两 种方法都不可行。浮点数的比较还有一种方法,目相对 误差。修改之后的程序和运行结果如下所示: 58 达到浮点数的精度限制。显示答案,小数后取10位小数 #include stdio.h> 这道题算法十分容易,因为规律非常明显:第一项 #include <math h> 为1,后面的项中分子为1,分母为第n-项的阶乘。 void maino 关键是循环结束的条件应该如何设置,如图2所示 float i 开始 float k for(i=1.0,k=;k>1e-6;|+=0.1) e-1.0 =1 if(i<2. 0) 这里条件是关键 k=(2.0-)/2.0; else k=(i-2.0)i; printf(i=%.1f\n",i) fActorial (i) 十十 Gi- C: WINDOWS( syster 1=1.0 输出 图2求解常数e的程序流程图 1=1.3 其中: Factorial ()是计算n的阶乘的两数。 =1.4 在此有两和方案: i=15 i=1.6 (1)方案一:设置一个较大的n,即循环条件为in 这种方法太主观,这个n值很难设定。如昊n太大, 1〓1.8 可能超出浮点数的凊度;如果n太小,e值不够精确。 (2)方案二:当这个n值足够大时,1/n!已绎超出 请技仁意键继续 了浮点数精度的限制,把其与e值相加之后,e值个会 雨发生改变ε根据这个思路,设置循环条件为 例4:计算常数e e!etem。其中tem=1.0/f。 数学常量e可以用下列幂级数展开来训算 以C语言浮点数机制为研究基础,对浮点数的存储 格式、有效位数、取值范围的含义、精度等方面问题进 e=1++++-+ 了实证研究,获得了一些有用的结论 写一个程序,通过级数的和计算e的值,要求结果 Analysis on the Floating Points of c language HAO LI-ping (Software School, Guangzhou Panyu Polytechnic, Guangzhou 511483, China) Abstract: Thc floating-point opcration has such problcms as precision, comparison, rounding off crror, which directly affect students'understanding of floating point and the accuracy of teaching cases. to tackle this situation, empirical studies, based on the float mechanism of C language, have been conducted in storage format, effective(significant)digits, numeric area, accuracy and application. Some useful results ave been Key words: floating point; storage format; significant digit; numeric area; floating-point operation 59

...展开详情
2018-04-11 上传 大小:656KB
举报 收藏
分享
C语言浮点数运算

有些C语言书上说float型的有效位数是6~7位,为什么不是6位或者7位?而是一个变化的6~7位? 浮点数在内存中是如何存放的? float浮点数要比同为4字节的int定点数表示的范围大的多,那么是否可以使用浮点数替代定点数? 为什么float型浮点数9.87654321 > 9.87654322不成立?为何10.2 - 9的结果不是1.2,而是1.1999998?为何987654321 + 987.654322的结果不是987655308.654322? 如何才能精确比较浮点数真实的大小? 看完本文档,你将会得到答案!

立即下载
C语言浮点数的二进制表示

C语言浮点数的二进制表示

立即下载
C语言浮点数运算解惑

是我博客的pdf形式,本文档来自Unix技术网,方便大家学习使用。

立即下载
关于C语言浮点数的存储

主要是介绍浮点数在C语言中的比较存储方式,这个可以探讨一下,与存储整型不同

立即下载
C语言浮点数转换四字节16进制数工具

C语言浮点数转换四字节16进制数工具,将浮点数转化为四字节。

立即下载
克服C语言浮点数的汇编语言处理数据(原创)

克服C语言浮点数的汇编语言处理数据,是原创的

立即下载
c语言识别浮点数的有穷自动机

识别浮点数的有穷自动机识别浮点数的有穷自动机识别浮点数的有穷自动机识别浮点数的有穷自动机

立即下载
C语言16进制转换浮点数

计算机通讯协议中,会遇到返回信息中,4个整型数字组合代表一个浮点数,本案例是通过位运算将4个整型组合转化成浮点数。

立即下载
浮点数c语言除法模拟源码

用c模拟浮点数硬件除法 有四舍五入及特殊情况分析

立即下载
剖析Intel IA32架构下C语言及CPU浮点数机制

剖析Intel IA32架构下C语言及CPU浮点数机制

立即下载
浮点数的输入(C语言控制台程序)

这是一个简单的以字符形式输入浮点数程序,对于错误进行了很好的处理,本程序主要体现了程序设计中对错误处理方法的思考。

立即下载
单精度浮点数与十六进制转换_C语言程序

单精度浮点数与十六进制转换_C语言程序__单片机也可用

立即下载
浮点数(单精度浮点数,双精度浮点数)

单精度浮点数,双精度浮点数,浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。

立即下载
TMS320C3x浮点数简介、IEEE754的32位转VC33的32位浮点数算法、IEEE754的64位浮点数转VC33的40位浮点数算法

本文档简介了TMS320C3x浮点数简介、IEEE754的32位转VC33的32位浮点数算法、IEEE754的64位浮点数转VC33的40位浮点数算法;给相关TI的DSP开发工程师提供开发参考。

立即下载
C语言下浮点数存储进txt并以浮点数格式显示

两个函数,create创建一个名为data.txt的文本,并保存。read函数读取文本并显示文本中的浮点数

立即下载
用VHDL语言实现浮点数运算

浮点数运算 关于IEEE754算法 用其他的语言实现浮点数的算法

立即下载
linux下C的浮点数实验

想了解C语言中float和double数据类型的存储格式吗?看看这篇文档,提供有可以在GNU/Linux下用gcc编译成功的实验代码。

立即下载
c浮点数的表示

浮点数是一个难点,希望对各位朋友有所帮助

立即下载
mips汇编语言实现浮点数运算

不用浮点数指令,基于IEEE754数据格式,在MARS上运行了用mips语言实现的加减乘除。我测试的结果是正确的。

立即下载
html+css+js制作的一个动态的新年贺卡

该代码是http://blog.csdn.net/qq_29656961/article/details/78155792博客里面的代码,代码里面有要用到的图片资源和音乐资源。

立即下载