本文主要是介绍eps是什么?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为什么 1-(1+eps/2)=0 呢?
eps 叫做机器的浮点运算误差限!PC机上eps的默认值为2.2204*10^(-16)
若某个量的绝对值小于eps,就认为这个量为0
等式中的eps/2小于eps,所以运算中就认为是0!答案也就是0
但是
1-(1+eps*2/5)=0
1-(1+eps*3/5)= -2.2204e-016
思考下这是为什么?
解答:
eps是一个函数。当没有参数时默认参数是1.返回的是该参数的精度。
也就是说单个的eps实际上是eps(1),表示的是1的精度。
这里要说一下精度的概念。浮点数所能表示的数值范围是很大的,但是浮点数不是无限的,连续的和稠密的;而是有限的,离散的和稀疏的,而且每个数的精度都不一样。越是靠近0,精度越高,反之则越低。eps返回的是1的精度。指的是1和离他最近的浮点数之间的距离。
我们输入eps可以看到1的精度。
也就是说离他最近的浮点数和他相差eps(1)。我们可以计算1+eps,他就是离1最近的浮点数。
如果我们计算出的数介于这两者之间,系统就会自动把它舍入到离他最近的数。1+eps*3/5离1+eps近,所以1+eps*3/5≈1+eps;1+eps*2/5离1近,所以1+eps*2/5≈1,而1+eps/2在正当中,系统自动把它舍入到1,即1+eps/2≈1
如果我们输入eps(2)可以看到2的精度,它只有1的精度的一半。即eps(2)=eps*2
因此系统会认为2+eps≈2,而2+eps*6/5≈2+eps*2=2+eps(2)
这篇关于eps是什么?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!