Warum rechnet Python falsch?



  • Das liegt daran, dass eine Sprache die mit Hardware programmiert wurde nie genauer rechnen kann als eine Sprache die immerhin schon seit zwei oder drei Jahren ohnewg schon bekannte zahlen hat.



  • public static void main(String[] args) {
    	System.out.println(1264.0/100);
    }
    

    Rechnet auch richtig



  • neonexpert schrieb:

    Das liegt daran, dass eine Sprache die mit Hardware programmiert wurde nie genauer rechnen kann als eine Sprache die immerhin schon seit zwei oder drei Jahren ohnewg schon bekannte zahlen hat.

    Häh?
    Versteht das jemand?

    Python rechnet ja offensichlich falsch.

    Denn obige Rechnung kann ich auch im Kopf machen und erhalte ein anderes Ergebnis als Python.



  • IronPython rechnet richtig. :p



  • Python rechnet selbstverständlich richtig und ihr seid alles blöse Sucker! Ich weiß nicht aus dem Stegreif, wie viele Nachkommastellen bei float garantiert sind, aber die 1 steht klar hinter den garantierten Stellen.



  • Mathematiker schrieb:

    neonexpert schrieb:

    Das liegt daran, dass eine Sprache die mit Hardware programmiert wurde nie genauer rechnen kann als eine Sprache die immerhin schon seit zwei oder drei Jahren ohnewg schon bekannte zahlen hat.

    Häh?
    Versteht das jemand?

    Python rechnet ja offensichlich falsch.

    Denn obige Rechnung kann ich auch im Kopf machen und erhalte ein anderes Ergebnis als Python.

    Natürlich stimmt das. Phyton ist nicht wie C++ mit einer Programmiersprache zu vergleichen die auf naher Hardware läuft, sondern kommt direkt auf der Byteebene zum tragen.



  • Servus,

    das große Zauberwort hier heißt GRANULARITÄT. Dieses Problem tritt bei jeder Programmiersprache auf 😉

    bei einem Wert von 1264.0f liegt sie etwas bei 0.00003f. Nach zu lesen in jedem guten Programmierbuch 😃
    - Java ist auch eine Insel
    - GEMS 4
    - ...



  • Siassei schrieb:

    Servus,

    das große Zauberwort hier heißt GRANULARITÄT. Dieses Problem tritt bei jeder Programmiersprache auf 😉

    Da gibt es garkeine Zauberwörter. Wenn die Programmierung auf Hardwaretypischen Systemen läuft kann C++ im gegensatz zu Phyton deutlich besser an der Kernelgrenze rechnen als Java.



  • Servus neonexpert,

    eine kleinen Einführungskurs für Fließkommazahlen nach IEEE 754-Standart:
    Float = 32-Bit-IEEE-Format folgt
    - 1 Bit Vorzeichen
    - 8 Bits Exponent
    - 23 Bits Mantisse

    Zitat aus GEMS "... Die Genauigkeit einer 32-Bit-Fließkommazahl hängt von der Genauigkeit des LSB der Matnisse für einen gegebenen Exponenten ab. Sehr nah bei der 1 liegt die Granularität einer 32-Bit-Fließkommazahl bei 2-24, was ..." Irgendwie auch logisch 😃

    Im gegebenen Beispiel liegt die Abweichung in der Granularität der Fließkommazahl. Und wer sagt denn, dass ich mich auf Java beziehe. Ich habe ledeglich ein paar Quellen zur meiner Antwort angegeben, wo du das ganze nachlesen kannst. Dies vermittelt einen prof. Eintruck und es ist für jeden nach vollziehbar.



  • Das ist schon fast gut, aber bei einer Hardware kann eine Zahl nicht genauer sein als die verwendete Programmiersprache. Wenn dann die Programmiersprache wie Phyton nicht so nahe an der Hardware ist treten aber änderungen im vergleich zu C++ auf, die es bei java ohnehin auch mit anderer Hardware gibt.



  • @nonexpert: du redest ganz schön wirres Zeug!



  • 😃


Anmelden zum Antworten