Nie możesz tego rozwiązać i sugeruję, że to nie problem. Właśnie tak Oracle przechowuje NUMBER
wartości:z najmniejszą potrzebną precyzją. Jeśli podałeś cenę jako 4.00
byłby przechowywany jako 4
.
Zauważ, że Java nie będzie domyślnie podawać wartości do dwóch miejsc po przecinku. Musisz określić liczbę miejsc dziesiętnych.
A jeśli to możliwe, użyłbym BigDecimal
zamiast float
Za cenę. float
typ nie jest precyzyjny. Alternatywą jest użycie jednego z typów liczb całkowitych (int
lub long
) i samodzielnie zarządzaj miejscami dziesiętnymi.
Aby sformatować cenę do wyświetlenia w kodzie Java, użyj String.format("%.2f", price)
.
Aby sformatować cenę w zapytaniu Oracle, użyj TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Wybierz najlepszą dla siebie liczbę symboli zastępczych i zauważ, że Oracle umieści dodatkową spację na początku wyniku. Jest przeznaczony do przechowywania znaku minus, jeśli liczba jest ujemna, ale dla zera/dodatnia jest to spacja. Aby pozbyć się przestrzeni, użyj FM
modyfikator w TO_CHAR
:
SELECT TO_CHAR(price, 'FM999999990.00'), etc.