Не можете да го разрешите и бих предложил, че това не е проблем. Точно така 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.