division von bigdecimal integer
Möchte ich teilen ein bigdecimal-Wert mit einem integer.ich habe gerundet die bigdecimal-Wert(wenn es 133.333 dann gerundete Wert von 133).da unten ist mein code-snippet.
v1 = v1.setScale(0, RoundingMode.HALF_UP);
int temp = BigDecimal.valueOf(v1.longValue()).divide(constant1);
Wert der Konstanten ist 12. Es zeigt eine Fehlermeldung, dass
Die Methode divide(BigDecimal) in den Typ BigDecimal ist nicht anwendbar für die Argumente (int)
Kann mir jemand helfen tun die division?
ich bin stecken geblieben auf diese....bitte mir jemand sagen, wat zu tun... 🙁
Aktualisiert meine Antwort.
Aktualisiert meine Antwort.
InformationsquelleAutor andro-girl | 2011-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern
zu
Btw, warum don ' T tun Sie nur so etwas wie
??
rechts, also append
.intValue()
auf das Ende der Linie, dann, wenn Sie nicht wollen, dies zu tun.da das erwartete Ergebnis (scheinbar) ist ein
int
besser tunint temp = Math.round(v1.longValue()) / constant1;
, oder?Sicher. Vorausgesetzt, Sie sollen zu schreiben
doubleValue
benötigen Sie eine Form für diese Zeile zu kompilieren, obwohlich kann nicht ändern Sie den Datentyp der temp.der bcz ist es mit Hilfe woanders
InformationsquelleAutor aioobe
Sollten Sie schreiben Sie den code wie folgt:
Ist die Sache mit BigDecimal und BigInteger ist, dass Sie hauptsächlich arbeiten mit Instanzen dieser Klassen und nicht mit primitiven Typen. Die Ergebnisse der Operationen werden auch neue Instanzen dieser Klassen.
Einer anderen Anmerkung: ich empfehle
valueOf
statische Methode statt Konstruktor, denn dadurch können Sie die Möglichkeit haben, vermeiden Sie die Erstellung von neuen Objekten. Mit einem Konstruktor kann die Erstellung einer neuen Objekt-explizite, das ist nicht notwendig in diesem Fall.Werfen Sie einen Blick auf diese Frage: stackoverflow.com/questions/4591206/... , es ist dort gezeigt, wie Sie vermeiden, solche Fehler durch Rundung.
InformationsquelleAutor Malcolm