Ich möchte alle abschließenden Nullen entfernen, ohne die Zahl abzuschneiden oder zu runden, wenn sie keine hat. Zum Beispiel könnte die Zahl etwas wie 12.0
sein, in welchem Fall die nachfolgende Null entfernt werden sollte. Aber die Zahl könnte auch etwas fast irrational sein, so wie 12.9845927346958762...
auf einen Rand am Bildschirm geht. Gibt es eine Möglichkeit, DecimalFormat oder eine andere Klasse so einzurichten, dass nachfolgende Nullen abgeschnitten werden, während die Irrationalität erhalten bleibt?
Wenn Sie zu BigDecimal
wechseln möchten, gibt es eine # stripTrailingZeroes () Methode, die dies erreicht.
private statische Zeichenfolge removeTrailingZeros (double d) {
Rückgabewert String.valueOf (d) .replaceAll ("[0] * $", "") .replaceAll (". $", "");
}
oder
private statische Zeichenfolge removeTrailingZeros (double d) {
Rückgabe String.valueOf (d) .replaceAll (".? 0 * $", "");
}
Dies sind falsche Codes.
System.out.println (removeTrailingZeros ( 1234.23432 400000 )); zurück: 1234.23432
aber muss zurückkehren: 1234.23432 4
private static Zeichenfolge removeTrailingZeros (double myDouble) {
return (new BigDecimal (Double.toString (myDouble))). toPlainString (). replaceAll ("[0]
* $", "") .replaceAll (". $", "");
}
Diese Methode funktioniert auch falsch
System.out.println (removeTrailingZeros ( 472.304000 )); gibt 472.30 anstelle von 472.304
zurückSystem.out.println (removeTrailingZeros ( 472304000 )); gibt 47230 anstelle von 472304000
zurück
Die #stripTrailingZeroes () oder toPlainString () des BigDecimal sind eine gute Methode, aber auch nicht alleine.
// ---------------- BigDecimal.toPlainString -------------
System.out.println ((new BigDecimal (Double.toString ( 4724 ))). ToPlainString ());
System.out.println ((new BigDecimal (Double.toString ( 472304000 ))). ToPlainString ());
gibt zurück:
4724.0 (das ist nicht gut - wir wollen nicht '.0')
472304000 (Das ist in Ordnung)
// ---------------- BigDecimal.stripTrailingZeros ------------- < br>
System.out.println ((new BigDecimal (Double.toString ( 4724 )). StripTrailingZeros ()))
System.out.println ((new bigDecimal (Double.toString ( 472304000d )). StripTrailingZeros ()));
returns:
4724.0 (Das ist in Ordnung)
4.72304E + 8 (Das ist nicht in Ordnung - wir wollen 472304000 ) < br>
Die perfekte Auflösung des aktuellen Themas "Nachgestellte Nullen vom Doppelten entfernen" verwendet
.stripTrailingZeros (). toPlainString ()
Zum Beispiel:
// --------- BigDecimal.stripTrailingZeros.toPlainString -----------------
System.out.println (new BigDecimal (Double.toString ( 472.304000 )). StripTrailingZeros (). ToPlainString ());
System.out.println ((new BigDecimal (Double.toString ( 4724 )). StripTrailingZeros (). ToPlainString ()));
System.out.println ((new BigDecimal (Double.toString ( 472304000d )). StripTrailingZeros (). ToPlainString ()));
Ergebnis ist:
472.304 (korrekt)
4724 (korrekt)
472304000 (korrekt)
> p>
Tags und Links java double decimalformat