的那一刻F成爲小於1,我得到 「0」 顯示
這不是發生了什麼。第一次f
小於1時,打印4.0 0.675
。這不是0
:
1.0 1.5
2.0 1.5
3.0 1.125
4.0 0.675
5.0 0.3375
的f
的值,那麼很快就會非常非常小,到Python開始使用科學記數法負指數的點:
6.0 0.144642857143
7.0 0.0542410714286
8.0 0.0180803571429
9.0 0.00542410714286
10.0 0.00147930194805
11.0 0.000369825487013
12.0 8.53443431568e-05
13.0 1.82880735336e-05
14.0 3.65761470672e-06
15.0 6.8580275751e-07
注意-05
,-06
等。 f
的值變得如此之小以至於小數點移位更有效率。如果你要使用格式化定點符號的價值,他們會使用多個零:
>>> format(8.53443431568e-05, '.53f')
'0.00008534434315680000128750276600086976941383909434080'
>>> format(6.8580275751e-07, '.53f')
'0.00000068580275751000002849671038224199648425383202266'
最後,f
成爲浮點型太小;浮點值,根本無法去接近零超出了這一點:
前
165.0 5.89639287564e-220
166.0 1.05923225311e-221
167.0 1.89148616627e-223
168.0 3.35766775077e-225
169.0 5.92529603077e-227
170.0 0.0
0.0
前的最後一個值是5.925與227零它:
>>> format(5.92529603077e-227, '.250f')
'0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000592529603077000028336751'
這是相當接近對象可以表示的絕對最小值a float
;看到min
attribute of the sys.float_info
named tuple:
>>> import sys
>>> sys.float_info.min
2.2250738585072014e-308
換句話說,你達到了極限,並且有5.92529603077e-227
和0.0
左邊之間沒有更多的表示值。