|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
eps是一个函数。当没有参数时默认参数是1.返回的是该参数的精度。
+ B) l$ G5 s& W y+ U$ C也就是说单个的eps实际上是eps(1),表示的是1的精度。; d4 e2 H* P5 J% ]# W6 c& V# D, h
这里要说一下精度的概念。浮点数所能表示的数值范围是很大的,但是浮点数不是无限7 [+ W- d7 H; y7 Y0 s6 z( `
的,连续的和稠密的;而是有限的,离散的和稀疏的,而且每个数的精度都不一样。越
6 M: |) \1 L- r9 z$ Z$ G是靠近0,精度越高,反之则越低。eps返回的是1的精度。指的是1和离他最近的浮点数* q$ C. v# d- C2 L
之间的距离。
% W0 f6 N5 d. {+ S% n+ `$ S, h# w我们输入eps可以看到1的精度。
( U5 K/ \1 {1 V% m9 Z
$ P- T8 H2 i' X* l9 l也就是说离他最近的浮点数和他相差eps(1)。我们可以计算1+eps,他就是离1最近的浮9 F5 x" J9 D) H% g- o
点数。 4 ^9 s1 d: B- `5 `) L& J
0 b( L! G/ K& \
如果我们计算出的数介于这两者之间,系统就会自动把它舍入到离他最近的数。
/ L( B5 e" ]. S8 o& S* w, g2 E' l) R7 Y* P8 G4 n) h) k$ W2 b6 D: h) K E
/ E1 |# o! g# d8 e' `
1+eps*3/5离1+eps近,所以1+eps*3/5≈1+eps;1+eps*2/5离1近,所以1+eps*2/5≈1, [/ ? h& B$ Y% i; `4 X8 {$ U; u
$ _! ^+ s- u! O& ?: I
7 I* m5 ^$ Y( p# h' f3 M' j
而1+eps/2在正当中,系统自动把它舍入到1,即1+eps/2≈1
! i9 r- D5 q1 U/ d- k* j9 t/ U& H1 s6 [
$ p8 t& s/ b H+ T6 T3 f! x如果我们输入eps(2)可以看到2的精度,它只有1的精度的一半。即eps(2)=eps*2 , t+ R2 v. O% A$ ~
8 P$ n- {, C& E3 f1 g
因此系统会认为2+eps≈2,而2+eps*6/5≈2+eps*2=2+eps(2) 4 I9 j+ U: B. Z9 |
|
|