设计程序处理用E或e表示输入实数的情况 比如:1.0E-2 0.01 C语言的题,c语言自然对数e怎么表示

首页 > 娱乐 > 作者:YD1662025-05-23 04:44:17

设计程序处理用E或e表示输入实数的情况 比如:1.0E-2 0.01 C语言的题,c语言自然对数e怎么表示(1)

首先回答题主的问题。产生这样的误差的原因在于,浮点数并不能表示所有的实数,对于那些不能表示的数,会选取一个误差最小的,浮点数系统能表示的数来代替它。

这里的问题出在二进制和十进制的转换上,有些用十进制能轻易写出的数,在二进制下就变成了无限小数,自然没有相应的浮点数对应。


解决办法:
1. 自己实现一个浮点数系统,

直接使用十进制表示

,避免了上述在有限精度下不能完成的进制转换。
2. 记在浮点数系统下的表示为,那么有

其中为字长,一般取24或53。这说明,在一般的使用中,这个误差是相当小的。对于结果是有限小数的运算来说,这一误差往往并不足以影响到有效的数位。因此,可以估计一下结果的小数位数,并

做四舍五入

,就可以得到精确的结果了。
3. 对于那些精度超出现有浮点数系统的计算,哪怕没有二进制-十进制的转换,也是会有误差的。这就要求你实现或使用一套

足以精确表示运算中所有数字

的系统。

然后扯点题外话,为什么在实际应用中我们不会考虑这样的问题呢?原因有:
1.

误差并不是只有计算才会带来的

。从实际问题提炼出数学模型时往往忽略了许多次要因素,因而即使数学模型能够求出精确解,也与实际问题的真解不同,它们的差距就是

模型误差

。另外,除了程序设定的数,很多计算用到的数都是经由测量得到,由于仪器的精密性、实验手段的局限性,就会有

观测误差

。因此,一味的追求计算过程的零误差往往是没有意义的(我们依然致力于将计算误差减小到可接受范围内)。
2. 在计算机中,我们能够精确的表示整数。但遗憾的是,实数集对于整数来说,是一个无限维的线性空间。因此,哪怕计算机的容量足够大,也

不存在一种能表示一切实数的万能计数系统

。在这个意义下,浮点数系统是一个相当好的折衷方案。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.