Die Story:"fast gleich" in Jasmine
In Python eingebaute in unittest
Rahmen, gibt es eine "annähernde Gleichheit" Behauptung über assertAlmostEqual()
Methode implementiert:
x = 0.1234567890
y = 0.1234567891
self.assertAlmostEqual(x, y)
, die die Zahl hat von Dezimalstellen zur Überprüfung konfigurierbar.
Und gibt es eine numpy.testing.assert_almost_equal()
, die auch für die Arrays von Schwimmern arbeitet:
import numpy.testing as npt
import numpy as np
npt.assert_almost_equal(np.array([1.0,2.3333333333333]), np.array([1.0,2.33333334]))
Die Frage:
Wie eine "fast gleich" Behauptung in JavaScript/Jasmin machen für Schwimmer und eine Reihe von Schwimmern?
Gibt es etwas, ich vermisse über Javascript, dass der Algorithmus in Python-Dokumentation beschrieben wird nicht funktionieren? 'Testen Sie, dass der erste und der zweite Wert annähernd (oder nicht annähernd) gleich sind, indem Sie die Differenz berechnen, auf die angegebene Anzahl von Dezimalstellen runden (Standard 7) und mit Null vergleichen. Beachten Sie, dass diese Methoden die Werte auf die angegebene Anzahl von Dezimalstellen (d. H. Wie die Funktion round()) und nicht auf signifikante Stellen runden. Wenn Delta anstelle von Stellen geliefert wird, dann muss die Differenz zwischen erster und zweiter kleiner oder gleich (oder größer als) Delta sein. – dm03514
@ dm03514 yup, der Algorithmus selbst ist genau das, was ich vorhabe. Suchen, ob etwas eingebaut ist oder der beste Weg, um es mit Javascipt/Jasmin zu behandeln. Vielen Dank. – alecxe
Wissen Sie, wie man Gleitkommazahlen für "fast" Gleichheit vergleicht? Es ist ziemlich Standard, wie es normalerweise implementiert wird. Nimm den Unterschied der Zahlen, die verglichen werden, und überprüfe, ob es sehr, sehr klein ist (weniger als einige Epsilon). –