Beispiel:Wie kann ich beim Vergleich von Doppelfeldern den Rundungsfehler berücksichtigen?
(Actual) array: 0.0402666113, 0.2355691
(Expected) array: 0.04027, 0.23557
Ich versuche, einen JUnit-Test zu schreiben, die tatsächliche Anordnung, um zu sehen, ob meine erwartete Array übereinstimmt. In dem oben angegebenen Beispiel sollte der Test bestehen (d. H. Arrays sind gleich) - in der Praxis jedoch nicht. Ich würde eine Nachricht in der Form von Arrays bekommen, die sich bei Index 0 unterscheiden, erwartet: 0.0402666113; aktuell: 0,04027 '. Ich nehme an, dies liegt an der Genauigkeit der Zahlen. Gibt es eine Möglichkeit, diese Arrays ohne For-Schleife zu vergleichen?
ich zur Zeit versucht, sie vergleichen Sie diese Zeile mit:
assertArrayEquals(expected, actual);
Ich habe Beispiele gesehen, wo sie so etwas tun würde:
final double delta = 0.0001;
assertArrayEquals(expected, actual, delta);
Dies sollte jedoch arbeiten, bekomme ich 'Kann Methode assertArrayEquals (double [], double [], double)' nicht auflösen '. Gibt es eine äquivalente Methode, die ich in meiner JUnit-Version (4.12) verwenden kann - wenn nicht, wie kann ich meine JUnit in IntelliJ aktualisieren? Ich habe erst kürzlich damit begonnen, diese IDE zu verwenden.
Wirklich zu schätzen jede Hilfe, danke.
'assertArrayEquals' wird auch irgendwo eine Schleife verwenden. –
Sie können die Mathematik manuell mit Hilfe der Division durch die Genauigkeit gefolgt von Rundung machen zB Math.round (a/0.0001) == Math.round (b/0.0001) – copeg
Warum nicht benutzerdefinierte Array gleich schreiben und 'boolean' übergeben, um an zu behaupten? –