Не можете да го разрешите и бих предложил, че това не е проблем. Точно така Oracle съхранява NUMBER стойности:с най-малко необходима точност. Ако сте въвели цената като 4.00 ще се съхранява като 4 .
Обърнете внимание, че Java няма да използва по подразбиране два десетични знака, когато показва стойността. Трябва да посочите броя на десетичните знаци.
И, ако е възможно, бих използвал BigDecimal вместо float за цената. float типът не е точен. Алтернатива е да използвате един от типовете цели числа (int или long ) и сами управлявайте десетичните знаци.
За да форматирате цената за показване във вашия Java код, използвайте String.format("%.2f", price) .
За да форматирате цената в заявка на Oracle, използвайте TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Изберете броя на контейнерите, който е най-подходящ за вас, и имайте предвид, че Oracle ще постави допълнителен интервал в началото на резултата. Предназначено е да съдържа знак минус, ако числото е отрицателно, но за нула/положително е интервал. За да се отървете от празното място, използвайте FM модификатор в TO_CHAR :
SELECT TO_CHAR(price, 'FM999999990.00'), etc.