Ich habe ein Problem mit C#. Um genau zu sein mit dem Math.pow(). Wenn ich 15^14 berechnen möchte, bekomme ich "29192926025390624". Aber wenn ich es mit Wolfram Alpha berechne bekomme ich "29192926025390625". Wie Sie sehen können, ist dieser einzige Unterschied 1 Zahl. Wolfram Alpha ist jedoch korrekt. Warum ist C# nicht? und wie kann ich das beheben, damit ich den richtigen Wert in C# bekomme? 7Math.Pow berechnet nicht korrekt
Mein Code ist ziemlich einfach, da ich gerade mit hartcodierten Beispielen versuche. Also was ich mache ist: Math.Pow(15,14);
Dies gibt 29192926025390624
. Und nicht "29192926025390625", was die richtige Antwort ist.
Links: Wolfram Alpha
Ohne Ihren Code zu sehen, wird alles eine Vermutung sein. Meine Vermutung ist, dass Wolfram Alpha es mit einem Gleitkomma-Typ mit höherer Genauigkeit berechnet. – ChrisF
Übrigens vorausgesetzt, dass 29192926025390625 korrekt ist (es sieht korrekt aus: es endet mit einer "5"), dann verhält sich "Math.Pow" entsprechend der Spezifikation: 29192926025390624 ** ist ** die nächste doppelt genaue IEEE 754-Nummer. Die andere nahegelegene Nummer mit doppelter Genauigkeit ist 29192926025390628. –
Es ist korrekt; Es ist Ihr Verständnis von Fließkomma-Arithmetik und die Spezifikation für "Math.Pow", die fehlerhaft ist. Genießen Sie: http://docs.sun.com/source/806-3568/ncg_goldberg.html – jason