Wie ich das Problem mit der Potenz gelöst habe

Potenz steigern - 9 Lifehacks für mehr Potenz

Oral Beschneidung

Dies wird das Ergebnis 0. Soweit ich das verstanden habe, ist dies auf Fehler in der Gleitkomma-Multiplikationsgenauigkeit zurückzuführen. Hat jemand eine gute Lösung damit ich in diesem Fall das korrekte Ergebnis 0. Ich wollte nur wissen, ob einer von euch eine schöne, elegante Lösung hat. Überraschenderweise wurde diese Funktion noch nicht veröffentlicht, obwohl andere ähnliche Varianten haben.

Es ist prägnant und ermöglicht unterschiedliche Präzision. Beachten Sie, dass dieses Verhalten für die allgemeine Verwendung wahrscheinlich akzeptabel ist. Das Problem tritt auf, wenn diese Wie ich das Problem mit der Potenz gelöst habe verglichen werden, um eine geeignete Aktion zu bestimmen.

Wenn Sie mit Schwimmern zu tun haben, erwarten Sie immer kleine Rundungsfehler, also müssen Sie das angezeigte Ergebnis immer auf etwas Vernünftiges runden. Im Gegenzug erhalten Sie sehr, sehr schnelle und leistungsfähige Arithmetik, weil alle Berechnungen in der nativen Binärdatei des Prozessors sind. Wenn Sie mit Dingen zu tun haben, die diese Genauigkeit erfordern zB finanzielle Transaktionenist Javascript wahrscheinlich nicht das beste Werkzeug, das Sie verwenden können da Sie die Festkomma-Typen erzwingen wollen, ist eine statische Sprache wahrscheinlich besser.

Sie suchen nach der eleganten Lösung, denn ich fürchte, das ist es: Schwebekörper sind schnell, haben aber kleine Rundungsfehler - immer etwas Sinnvolles bei der Anzeige ihrer Ergebnisse.

Die round -Funktion bei phpjs. Diese Funktion ermittelt aus der Multiplikation zweier Gleitkommazahlen die benötigte Genauigkeit und gibt ein Ergebnis mit der entsprechenden Genauigkeit zurück. Elegant, obwohl es nicht ist. Ich BigNumber. Es hat eine gute documentation und der Autor reagiert sehr sorgfältig auf Feedback. Die kleine Schwester zu bignumber. Ich bin nicht so gut in der Programmierung, aber war wirklich an diesem Thema interessiert, also habe ich versucht zu verstehen, wie man das löst, ohne irgendwelche Bibliotheken oder Skripte zu benutzen.

Sie müssen diesen Code möglicherweise umgestalten, da ich nicht gut programmieren kann :. Im Gegensatz Wie ich das Problem mit der Potenz gelöst habe Pedros-Lösung wird dies 0, Sehen Sie sich diese Frage an, um zu erfahren, warum.

Machst du nur Multiplikation? Wenn ja, dann können Sie zu Ihrem Vorteil ein ordentliches Geheimnis über die Dezimalarithmetik verwenden. Also, wenn JavaScript uns eine Nummer wie 0. Dezimalstelle runden, ohne Angst haben zu müssen, die Genauigkeit zu verlieren.

Sehen Sie sich die Festkommaarithmetik an. Ich würde es auf einige Dezimalwerte abrunden, was die einfachste Lösung ist. Wenn es zum Drucken kommt, möchten Sie vielleicht das Ergebnis als Bruch anzeigen. Mit der von mir vorgeschlagenen Darstellung wird es trivial.

Natürlich hilft das nicht viel mit irrationalen Zahlen. Vielleicht möchten Sie jedoch Ihre Berechnungen so optimieren, dass sie das geringste Problem verursachen z. Zum Beispiel verwendet die Calculator-App, die mit Windows ausgeliefert wird, jetzt Arithmetik mit beliebiger Genauigkeit, um dieses Problem zu lösen.

Sie müssen sich nur überlegen, wie viele Dezimalziffern Sie tatsächlich wollen - den Kuchen können Sie nicht essen und auch nicht essen Numerische Fehler häufen sich bei jeder weiteren Operation und wenn Sie es nicht frühzeitig abschneiden, wird es einfach wachsen.

Numerische Bibliotheken, die saubere Ergebnisse liefern, schneiden die letzten 2 Ziffern bei jedem Schritt ab, numerische Koprozessoren haben aus dem gleichen Grund auch eine "normale" und "volle" Länge. Sie könnten auch weiterhin Mathe machen und nur am Ende abschneiden - vorausgesetzt, Sie zeigen nur an und machen keine if-s mit Ergebnissen. Wenn Sie das tun können, dann.

Platz vom letzten 3. Um Wie ich das Problem mit der Potenz gelöst habe zu vermeiden, sollten Sie mit Integer-Werten anstelle von Gleitkommawerten arbeiten. Bei Wie ich das Problem mit der Potenz gelöst habe Anzeige verwenden Sie einen Formatierer, um das Trennzeichen einzufügen. Viele Systeme verzichten auf die Verwendung von Dezimalzahlen. Bei Gleitkommaformaten treten daher immer Rundungsfehler bei den Eingabewerten auf.

Die Fehler an den Eingängen führen natürlich zu Fehlern am Ausgang. Wenn nur kontinuierliche Funktionen und Operatoren verwendet werden, wird oft auf die gewünschte Genauigkeit gerundet nicht abgeschnitten. Da die Rundung einen Fehler hinzufügt, der dazu führen kann, dass der Gesamtfehler mehr als die Hälfte der gewünschten Genauigkeit beträgt, sollte die Ausgabe basierend auf der erwarteten Genauigkeit der Eingaben und der gewünschten Genauigkeit der Ausgabe korrigiert werden.

Du solltest. Diese zwei Dinge werden normalerweise nicht gemacht und in den meisten Fällen sind die Unterschiede, die dadurch verursacht werden, dass sie für die meisten Benutzer nicht wichtig sind, aber ich hatte bereits ein Projekt, bei dem die Ausgabe von den Benutzern ohne diese Korrekturen nicht akzeptiert wurde.

Wenn diskrete Operatoren oder Funktionen beteiligt sind, sind möglicherweise zusätzliche Korrekturen erforderlich, um sicherzustellen, dass die Ausgabe wie erwartet erfolgt. Es ist oft effizienter, diese Probleme zu vermeiden, indem Sie Datentypen Ganzzahl- oder Festkommaformate für Berechnungen wie diese verwenden, die die erwartete Eingabe ohne Rundungsfehler speichern können.

Natürlich werde ich sonst auf etwa 10 Ziffern runden. Derselbe Autor hat 2 andere ähnliche Bibliotheken: Big. Ich mag die Lösung von Pedro Ladaria und verwende etwas Ähnliches. Sie müssen sich nur überlegen, wie viele Dezimalziffern Sie tatsächlich wollen - den Kuchen können Sie nicht essen und auch nicht essen :- Numerische Fehler häufen sich bei jeder weiteren Operation und wenn Sie es nicht frühzeitig abschneiden, wird es einfach wachsen.

Verwenden Sie die Nummer 1. Du solltest Runden Sie Eingaben auf die erwartete Genauigkeit ab, oder stellen Sie sicher, dass keine Werte mit höherer Genauigkeit eingegeben werden können. Wenn dies nicht möglich ist, reicht die Kombination der Genauigkeit des verwendeten Datentyps nicht aus, um die gewünschte Ausgabegenauigkeit für Ihre Berechnung zu Wie ich das Problem mit der Potenz gelöst habe.

Diskrete Funktionen oder Operatoren wie Modula Wenn diskrete Operatoren oder Funktionen beteiligt sind, sind möglicherweise zusätzliche Korrekturen erforderlich, um sicherzustellen, dass die Ausgabe wie erwartet erfolgt.

Besser vermeiden, das Problem zu haben Es ist oft effizienter, diese Probleme zu vermeiden, indem Sie Datentypen Ganzzahl- Wie ich das Problem mit der Potenz gelöst habe Festkommaformate für Berechnungen wie diese verwenden, die die erwartete Eingabe ohne Rundungsfehler speichern können.

Continue Reading. Wie entferne ich eine Eigenschaft aus einem JavaScript-Objekt? Wie bekommst du einen Zeitstempel in JavaScript? Wie überprüfe ich, ob eine Zeichenfolge eine Zahl Float ist?

Ist die Gleitkomma-Mathematik defekt? Wie ersetze ich alle Vorkommen einer Zeichenfolge in JavaScript? Wie prüfe ich, ob eine Zeichenfolge eine Unterzeichenfolge in JavaScript enthält? Wie entferne ich ein bestimmtes Element aus einem Array in JavaScript?