Du kan inte lösa det, och jag skulle föreslå att det inte är ett problem. Det är precis hur Oracle lagrar NUMBER
värden:med minsta möjliga precision som behövs. Om du angav priset som 4.00
den skulle lagras som 4
.
Observera att Java inte som standard har två decimaler heller när värdet visas. Du måste ange antalet decimaler.
Och om möjligt skulle jag använda BigDecimal
istället för float
för priset. float
typen är inte exakt. Ett alternativ är att använda en av heltalstyperna (int
eller long
) och hantera decimalerna själv.
För att formatera priset för visning i din Java-kod, använd String.format("%.2f", price)
.
För att formatera priset i en Oracle-fråga, använd TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Välj det antal platshållare som är bäst för dig och notera att Oracle lägger ett extra mellanslag i början av resultatet. Det är tänkt att hålla ett minustecken om talet är negativt, men för noll/positivt är det ett mellanslag. Använd FM
för att bli av med utrymmet modifierare i TO_CHAR
:
SELECT TO_CHAR(price, 'FM999999990.00'), etc.