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.