Als «bigdecimal» getaggte Fragen

BigDecimal ist ein numerischer Objekttyp in Java, der Dezimalzahlen mit beliebiger Genauigkeit darstellt.


6
Double vs. BigDecimal?
Ich muss einige Gleitkommavariablen berechnen und mein Kollege schlägt mir vor, sie BigDecimalstattdessen zu verwenden, doubleda sie genauer sind. Aber ich möchte wissen, was es ist und wie ich das Beste daraus machen kann BigDecimal?


1
Das Runden von BigDecimal auf * immer * hat zwei Dezimalstellen
Ich versuche, BigDecimal-Werte auf zwei Dezimalstellen aufzurunden. Ich benutze BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING)); logger.trace("rounded {} to {}", value, rounded); aber es macht nicht konsequent was ich will: rounded 0.819 to 0.82 rounded 1.092 to 1.1 rounded 1.365 to 1.4 // should be 1.37 rounded 2.730 to 2.8 // …

5
Wie ändere ich das Dezimaltrennzeichen von DecimalFormat von Komma zu Punkt / Punkt?
Ich habe diese kleine verrückte Methode, die BigDecimal-Werte in schöne und lesbare Strings konvertiert. private String formatBigDecimal(BigDecimal bd){ DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(3); df.setMaximumFractionDigits(3); df.setMinimumIntegerDigits(1); df.setMaximumIntegerDigits(3); df.setGroupingSize(20); return df.format(bd); } Es wird jedoch auch ein sogenanntes Gruppentrennzeichen erzeugt ",", mit dem alle meine Werte wie folgt angezeigt werden: xxx,xxx …


5
Addieren von BigDecimals mithilfe von Streams
Ich habe eine Sammlung von BigDecimals (in diesem Beispiel a LinkedList), die ich zusammenfügen möchte. Ist es möglich, dafür Streams zu verwenden? Mir ist aufgefallen, dass die StreamKlasse mehrere Methoden hat Stream::mapToInt Stream::mapToDouble Stream::mapToLong Jedes davon hat eine bequeme sum()Methode. Aber, wie wir wissen, floatund doubleArithmetik ist fast immer eine …

4
BigDecimal entspricht () versus compareTo ()
Betrachten Sie die einfache Testklasse: import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal x = new BigDecimal("1"); BigDecimal y = new BigDecimal("1.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? …

11
Ergänzung für BigDecimal
Ich möchte einige einfache Summen mit einigen Währungswerten in BigDecimalTyp machen. BigDecimal test = new BigDecimal(0); System.out.println(test); test.add(new BigDecimal(30)); System.out.println(test); test.add(new BigDecimal(45)); System.out.println(test); Offensichtlich verstehe ich die BigDecimalArithmetik nicht gut , siehe Ausgabe dahinter. Test 0 0 0 Kann mir jemand helfen?
155 java  bigdecimal 

2
BigDecimal setScale und rund
Was ist der Unterschied zwischen diesen beiden Anrufen? (Gibt es irgendwelche?) // 1. new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP)); // 2. new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
140 java  bigdecimal 

8
Konvertieren von BigDecimal in Integer
Ich habe eine Hibernate-Methode, die mir ein BigDecimal zurückgibt. Ich habe eine andere API-Methode, an die ich diese Nummer übergeben muss, aber sie akzeptiert Integer als Parameter. Ich kann die Rückgabetypen oder Variablentypen beider Methoden nicht ändern. Wie konvertiere ich nun BigDecimal in Integer und übergebe es an die zweite …


9
Sichere Konvertierung von String in BigDecimal
Ich versuche, einige BigDecimal-Werte aus der Zeichenfolge zu lesen. Nehmen wir an, ich habe diesen String: "1,000,000,000.999999999999999" und möchte ein BigDecimal daraus machen. Wie geht das? Erstens mag ich die Lösungen mit String-Ersetzungen (Ersetzen von Kommas usw.) nicht. Ich denke, es sollte einen ordentlichen Formatierer geben, der diesen Job für …
120 java  parsing  bigdecimal 

21
Sekundenwert in Stunden Minuten Sekunden umwandeln?
Ich habe versucht, einen Wert von Sekunden (in einer BigDecimal-Variablen) in eine Zeichenfolge in einem editText wie "1 Stunde 22 Minuten 33 Sekunden" oder etwas Ähnlichem zu konvertieren. Ich habe das versucht: String sequenceCaptureTime = ""; BigDecimal roundThreeCalc = new BigDecimal("0"); BigDecimal hours = new BigDecimal("0"); BigDecimal myremainder = new …

6
Wie drucke ich formatierte BigDecimal-Werte?
Ich habe ein BigDecimalFeld , amountdas Geld repräsentiert, und ich brauche seinen Wert im Browser in einem Format wie zu drucken $123.00, $15.50, $0.33. Wie kann ich das machen? (Die einzige einfache Lösung , die ich selbst sehen wird immer floatValueaus BigDecimalund dann mit NumberFormatmachen zweistelliger Präzision für den Bruchteil).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.