Gleitkommazahlen
April 22, 2020
1 Gleitkommazahlen
1.1 Berechnung der gröSSten / kleinsten Gleitkommazahl In [1]: f=0
for i in range(0,53):
f = f+2**(-i) print(f*2**1023) print(-f*2**1023) 1.7976931348623157e+308 -1.7976931348623157e+308
Sind gröSSere / kleinere Zahlen möglich?
In [2]: f=0
for i in range(0,54):
f = f+2**(-i) print(f*2**1023)
inf
Nein, gröSSere Zahlen sind nicht mölich.
1.2 Berechnung der kleinsten positiven Gleitkommazahl In [3]: f = (1+2**(-52))*2**(-1022)
print(f)
2.225073858507202e-308
1
1.3 Subnormale Gleitkommazahlen
In [4]: # kleinste von Null verschiedene subnormale Gleitkommazahl f = 2**(-52)*2**(-1022)
print(f)
# gröte subnormale Gleitkommazahl f=2**(-1)*2**(-1022)
print(f) 5e-324
1.1125369292536007e-308
Gibt es kleinere subnormale Gleitkommazahlen?
In [5]: f = 2**(-53)*2**(-1022) print(f)
0.0
Nein, eine kleinere Zahl wird auf Null gesetzt.
1.4 Rundung von Gleitkommazahlen In [6]: f=(1+1*2**(-52))*2**3
print(f)
# f_52=0, f_53=1: abrunden
f=(1+0*2**(-52)+1*2**(-53)+1*2**(-54))*2**3 print(f)
# f_53=0: abrunden
f=(1+1*2**(-52)+0*2**(-53)+1*2**(-54))*2**3 print(f)
8.000000000000002 8.0
8.000000000000002
In [7]: # f_52=1, f_53=1: aufrunden f=(1+1*2**(-52)+1*2**(-53))*2**3 print(f)
8.000000000000004
2
1.5 Berechnung des maximalen relativen Rundungsfehlers In [8]: myeps = 1.
while (1.+myeps)>1.:
myeps=myeps/2.
print(myeps) 1.1102230246251565e-16
3