Rundungsproblematik

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kobra23759
User
Beiträge: 61
Registriert: Donnerstag 9. April 2020, 18:47

Hallo,
macht es einen Unterschied, ob man schreibt m=np.matrix([ [0, 0, 0],[1,1,1] ]) oder
m=np.matrix([ [0.0, 0.0, 0.0],[1.0,1.0,1.0] ])
print(10/3) ist ja gleich print(10.0/3.0)

vielen Dank für die Beantwortung dieser sehr einfachen Frage
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Das solltest Du Dir einfach selbst beantworten können, wenn Du Dir den Datentyp anschaust.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Kobra23759: Ja und nein. In vielen Fällen macht es keinen Unterschied welche Definition von `m` verwendet wird. In einigen schon. Das gilt aber auch für Dein `print()`-Beispiel, denn das gilt nicht für alle Werte die man da an Stelle von 10 und 3 bzw. 10.0 und 3.0 einsetzen könnte. Es gibt auch Werte bei denen auch dort ein unterschiedliches Ergebnis heraus kommen kann weil Ganzzahlen und ganzzahlige Gleitkommazahlen nicht den gleichen Wertebereich abdecken.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Kobra23759
User
Beiträge: 61
Registriert: Donnerstag 9. April 2020, 18:47

Hallo Blackjack,
danke für die Hinweise. Hast du ein Beispiel für den print-Ausdruck, bei dem unterschiedliche Werte entstehen?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

die Präzision und die Rundungsproblematik von Gleitkommazahlen von Python (und anderen Programmiersprachen) ist auch in der Python-Doku erklärt: https://docs.python.org/3/tutorial/floatingpoint.html

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ein Beispiel für unterschiedliche Ergebnisse wenn man an die Grenzen des Wertebereichs geht:

Code: Alles auswählen

In [103]: 1000000000000000000000000000000000000000000000000000000000000000000000
     ...: 0000000000000000000000000000000000000000000000000000000000000000000000
     ...: 0000000000000000000000000000000000000000000000000000000000000000000000
     ...: 0000000000000000000000000000000000000000000000000000000000000000000000
     ...: 000000000000000000000000000000 / 9                                    
Out[103]: 1.1111111111111112e+308

In [104]: 1000000000000000000000000000000000000000000000000000000000000000000000
     ...: 0000000000000000000000000000000000000000000000000000000000000000000000
     ...: 0000000000000000000000000000000000000000000000000000000000000000000000
     ...: 0000000000000000000000000000000000000000000000000000000000000000000000
     ...: 000000000000000000000000000000.0 / 9.0                                
Out[104]: inf
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Kobra23759
User
Beiträge: 61
Registriert: Donnerstag 9. April 2020, 18:47

Hallo Blackjack,
danke für dein Bsp
Antworten