Du kan ikke løse det, og jeg vil foreslå, at det ikke er et problem. Det er bare sådan, Oracle gemmer NUMBER værdier:med den mindst nødvendige præcision. Hvis du har indtastet prisen som 4.00 det ville blive gemt som 4 .
Bemærk, at Java heller ikke som standard har to decimaler, når værdien vises. Du skal angive antallet af decimaler.
Og hvis det er muligt, ville jeg bruge BigDecimal i stedet for float til prisen. float typen er ikke præcis. Et alternativ er at bruge en af heltaltyperne (int eller long ) og administrer selv decimalerne.
For at formatere prisen for visning i din Java-kode skal du bruge String.format("%.2f", price) .
For at formatere prisen i en Oracle-forespørgsel skal du bruge TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Vælg det antal pladsholdere, der er bedst for dig, og bemærk, at Oracle vil sætte et ekstra mellemrum i begyndelsen af resultatet. Det er meningen, at det skal holde et minustegn, hvis tallet er negativt, men for nul/positiv er det et mellemrum. Brug FM for at slippe af med pladsen modifikator i TO_CHAR :
SELECT TO_CHAR(price, 'FM999999990.00'), etc.