Sie können es nicht lösen, und ich würde vorschlagen, dass es kein Problem ist. Genau so speichert Oracle NUMBER
Werte:mit der geringsten erforderlichen Genauigkeit. Wenn Sie den Preis als 4.00
eingegeben haben es würde als 4
gespeichert werden .
Beachten Sie, dass Java bei der Anzeige des Werts auch nicht standardmäßig zwei Dezimalstellen verwendet. Sie müssen die Anzahl der Dezimalstellen angeben.
Und wenn möglich, würde ich BigDecimal
verwenden statt float
für den Preis. Der float
Typ ist nicht genau. Eine Alternative ist die Verwendung eines der Integer-Typen (int
oder long
) und verwalten Sie die Nachkommastellen selbst.
Um den Preis für die Anzeige in Ihrem Java-Code zu formatieren, verwenden Sie String.format("%.2f", price)
.
Um den Preis in einer Oracle-Abfrage zu formatieren, verwenden Sie TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Wählen Sie die für Sie am besten geeignete Anzahl von Platzhaltern und beachten Sie, dass Oracle am Anfang des Ergebnisses ein zusätzliches Leerzeichen einfügt. Es soll ein Minuszeichen enthalten, wenn die Zahl negativ ist, aber für null/positiv ist es ein Leerzeichen. Um das Leerzeichen loszuwerden, verwenden Sie den FM
Modifikator im TO_CHAR
:
SELECT TO_CHAR(price, 'FM999999990.00'), etc.