Zum Beispiel habe ich die Variable 3.545555555, die ich auf nur 3.54 kürzen möchte.
java
double
truncate
decimalformat
Johnny
quelle
quelle
Antworten:
Wenn Sie dies zu Anzeigezwecken wünschen, verwenden Sie
java.text.DecimalFormat
:Wenn Sie es für Berechnungen benötigen, verwenden Sie
java.lang.Math
:quelle
floor
Abschneiden funktioniert nur bei positiven Werten.RoundingMode.DOWN
wieRoudingMode.FLOOR
immer mit Runden in Richtung negativer Unendlichkeit.Überprüfen Sie verfügbar
RoundingMode
undDecimalFormat
.quelle
DOWN
dies tatsächlich den Effekt einer Kürzung sowohl für positive als auch für negative Zahlen hat. Wie in der Beispieltabelle im Dokument zu sehen .Bit Old Forum, Keine der obigen Antworten hat sowohl für positive als auch für negative Werte funktioniert (ich meine für die Berechnung und nur zum Abschneiden ohne Rundung). Vom Link Runden einer Zahl auf n Dezimalstellen im Java- Link
Diese Methode hat bei mir gut funktioniert.
Ergebnisse :
quelle
Hinweis zunächst , dass eine
double
eine Binärbruch ist und nicht wirklich haben Dezimalstellen.Wenn Sie Dezimalstellen benötigen, verwenden Sie a
BigDecimal
, das einesetScale()
Methode zum Abschneiden enthält, oder verwenden SieDecimalFormat
, um a zu erhaltenString
.quelle
Wenn Sie aus irgendeinem Grund keine verwenden möchten,
BigDecimal
können Sie Ihredouble
in eineint
umwandeln, um sie abzuschneiden.Wenn Sie auf den Ort der Einen kürzen möchten :
int
Zum zehnten Platz:
int
double
Hundreths Platz
Beispiel:
In diesem Beispiel
decimalPlaces
wäre die Anzahl der Stellen VERGANGEN, an die Sie gehen möchten, also würde 1 auf die Zehntelstelle , 2 auf die Hundertstel usw. runden (0 Runden auf die Einerstelle und eine negative auf die Zehnerstelle , etc.)quelle
unroundedNumber
groß genug sind. Es mag für das Beispiel in der Frage funktionieren, aber eine allgemeine Lösung sollte für jedes funktionierendouble
.Wenn Sie als Zeichenfolge formatieren und wieder in Double konvertieren, erhalten Sie das gewünschte Ergebnis.
Der doppelte Wert ist nicht rund (), Boden () oder Decke ().
Eine schnelle Lösung könnte sein:
Sie können den sValue für Anzeigezwecke oder den newValue für die Berechnung verwenden.
quelle
Vielleicht
Math.floor(value * 100) / 100
? Beachten Sie, dass die Werte wie3.54
möglicherweise nicht genau mit a dargestellt werdendouble
.quelle
Sie können das NumberFormat-Klassenobjekt verwenden, um die Aufgabe auszuführen.
quelle
3.545555555, um 3.54 zu erhalten. Versuchen Sie Folgendes:
Dies ergibt = 3,54!
quelle
Hier ist die Methode, die ich benutze:
Dies kann auch durchgeführt werden:
quelle
Vielleicht folgendes:
quelle
Eine schnelle Überprüfung ist die Verwendung der Math.floor-Methode. Ich habe eine Methode erstellt, um ein Double auf zwei oder weniger Dezimalstellen zu überprüfen:
quelle
Ich habe eine leicht modifizierte Version von Mani .
Ausgabe:
quelle
Das hat bei mir funktioniert:
Ich persönlich mag diese Version, weil sie die Rundung tatsächlich numerisch durchführt, anstatt sie in einen String (oder einen ähnlichen) zu konvertieren und dann zu formatieren.
quelle
Nun, das mag etwas umständlich sein, aber ich denke, es kann dein Problem lösen :)
quelle