BigDecimal
mit compareTo()
Werken Vergleicht man (wie in: den Maßstab ignorieren und die tatsächliche Zahl vergleichen), aber wenn Unit-Tests ist es nützlich zu wissen, was die tatsächliche Zahl ist, speziell wenn der Test Scheitern.
Eine Option, die ich in diesem Fall nicht verwendet habe, ist stripTrailingZeros()
auf beide BigDecimal
:
assertEquals(new BigDecimal("150").stripTrailingZeros(),
otherBigDecimal.stripTrailingZeros());
diese Funktion Was ist Nullen nicht entfernt, ohne die Zahl zu ändern, so wird "150"
in "1.5E+2"
umgewandelt: auf diese Weise ist es doesn t egal, ob Sie 150
, 150.00
oder ein anderes Formular in otherBigDecimal
haben, weil sie normalisiert in die gleiche Form erhalten.
Der einzige Unterschied ist ein null
in otherBigDecimal
würde eine NullPointerException
anstelle einer Assertion Fehler geben.
Sie sind nicht das gleiche Objekt wie erwartet. Sie könnten prüfen, ob sie "gleich" sind. Hinweis: BigDecimal berücksichtigt "1000.0" und "1000.00" nicht als gleich, da die Anzahl der Dezimalstellen unterschiedlich ist. IMHO 'double' ist einfacher und nicht fehleranfälliger. ;) –
@PeterLawrey Ich frage mich wann wird das behoben werden, kann ich wirklich nicht, wie ist das in irgendeinem Szenario nützlich. – Maroun
@MarounMaroun Aus Gründen der Abwärtskompatibilität wird es nie repariert. –