|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
eps是一个函数。当没有参数时默认参数是1.返回的是该参数的精度。
2 H' T# q$ \/ q0 Q# ` t! C' i也就是说单个的eps实际上是eps(1),表示的是1的精度。- h$ p7 B* s8 F- c+ W8 X2 N
这里要说一下精度的概念。浮点数所能表示的数值范围是很大的,但是浮点数不是无限
3 z* q1 l7 U2 j/ j) R的,连续的和稠密的;而是有限的,离散的和稀疏的,而且每个数的精度都不一样。越. M" g' ^, ^9 e5 R8 ^" {# I
是靠近0,精度越高,反之则越低。eps返回的是1的精度。指的是1和离他最近的浮点数0 }( a( l4 o, A
之间的距离。 # ]2 I. c1 ]' W
我们输入eps可以看到1的精度。 / E0 @/ Z( e9 c, h& y7 I O7 N+ T
! H+ F" |- o) B, m- w0 i
也就是说离他最近的浮点数和他相差eps(1)。我们可以计算1+eps,他就是离1最近的浮+ j" N9 _0 v' k: }5 L1 q* W g
点数。
9 ]( k6 ^" F! B! v
9 f. F$ Y/ b$ d1 b" W如果我们计算出的数介于这两者之间,系统就会自动把它舍入到离他最近的数。
7 Y! i/ Q! b% \2 A& Z% Q9 s4 ]8 O7 H, Q4 ~2 k+ f4 B* s6 k
( Q D9 S6 I* d" o. y' E7 i7 A$ A1+eps*3/5离1+eps近,所以1+eps*3/5≈1+eps;1+eps*2/5离1近,所以1+eps*2/5≈1,
4 ?8 q( A+ o' ?9 U( D9 J+ d" Q1 J: T @* a. C9 O% P
* m& q. a8 J8 \! q
而1+eps/2在正当中,系统自动把它舍入到1,即1+eps/2≈1 * K+ L) x8 `& `8 ^5 g8 g3 j
2 k2 P& m$ l3 J6 }" K# w! @& S4 N/ @# e" Q2 ?" w8 W: J" o
如果我们输入eps(2)可以看到2的精度,它只有1的精度的一半。即eps(2)=eps*2
& u* e0 T$ l' b8 ]6 e) ]
& ^3 B7 q4 }) z+ a1 y( ?因此系统会认为2+eps≈2,而2+eps*6/5≈2+eps*2=2+eps(2) 2 A; @+ @* G2 F, n0 ?/ y
|
|