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.