So stellen Sie sicher, dass Sie keine Probleme haben: Informieren Sie sich über Gleitkomma-Rechenprobleme, stellen Sie jemanden ein, der dies tut, oder verwenden Sie einen gesunden Menschenverstand.
Das erste Problem ist die Präzision. In vielen Sprachen haben Sie "float" und "double" (double steht für "double precision"), und in vielen Fällen haben Sie mit "float" eine Genauigkeit von etwa 7 Stellen, während Sie mit double eine Genauigkeit von 15 haben In Situationen, in denen Präzision ein Problem sein könnte, sind 15 Stellen viel besser als 7 Stellen. In vielen leicht problematischen Situationen bedeutet die Verwendung von "double", dass Sie damit durchkommen, und "float", dass Sie dies nicht tun. Nehmen wir an, die Marktkapitalisierung eines Unternehmens beträgt 700 Milliarden Dollar. Stellen Sie dies in float dar und das niedrigste Bit ist $ 65536. Stellen Sie es mit double dar, und das niedrigste Bit beträgt ungefähr 0,012 Cent. Wenn Sie also nicht wirklich genau wissen, was Sie tun, verwenden Sie double und nicht float.
Das zweite Problem ist eher eine Grundsatzfrage. Wenn Sie zwei verschiedene Berechnungen durchführen, die zum gleichen Ergebnis führen sollen, ist dies häufig nicht der Fall, da Rundungsfehler vorliegen. Zwei Ergebnisse, die gleich sein sollten, sind "fast gleich". Wenn zwei Ergebnisse nahe beieinander liegen, sind die tatsächlichen Werte möglicherweise gleich. Oder vielleicht auch nicht. Sie müssen dies berücksichtigen und Funktionen schreiben und verwenden, die besagen, dass "x definitiv größer als y ist" oder "x definitiv kleiner als y ist" oder "x und y könnten gleich sein".
Dieses Problem wird noch schlimmer, wenn Sie die Rundung verwenden, zum Beispiel "x auf die nächste ganze Zahl abrunden". Wenn Sie 120 * 0,05 multiplizieren, sollte das Ergebnis 6 sein, aber Sie erhalten "eine Zahl, die sehr nahe an 6 liegt". Wenn Sie dann "auf die nächste ganze Zahl abrunden", ist diese "Zahl sehr nahe an 6" möglicherweise "etwas kleiner als 6" und wird auf 5 gerundet. Es spielt keine Rolle, wie nahe Ihr Ergebnis bei 6 liegt, solange es weniger als 6 beträgt.
Und drittens sind einige Probleme schwierig . Das heißt, es gibt keine einfache und schnelle Regel. Wenn Ihr Compiler "long double" genauer unterstützt, können Sie "long double" verwenden und prüfen, ob dies einen Unterschied macht. Wenn es keinen Unterschied macht, sind Sie entweder in Ordnung oder Sie haben ein echtes kniffliges Problem. Wenn es die Art von Unterschied macht, die Sie erwarten würden (wie eine Änderung bei der 12. Dezimalstelle), dann sind Sie wahrscheinlich in Ordnung. Wenn es Ihre Ergebnisse wirklich ändert, haben Sie ein Problem. Bitte um Hilfe.