Você não pode resolvê-lo, e eu sugiro que não é um problema. É assim que a Oracle armazena
NUMBER
valores:com a menor precisão necessária. Se você inseriu o preço como 4.00
ele seria armazenado como 4
. Observe que o Java também não terá como padrão dois decimais ao exibir o valor. Você precisa especificar o número de casas decimais.
E, se possível, eu usaria
BigDecimal
em vez de float
pelo preço. O float
tipo não é preciso. Uma alternativa é usar um dos tipos inteiros (int
ou long
) e gerencie você mesmo as casas decimais. Para formatar o preço para exibição em seu código Java, use
String.format("%.2f", price)
. Para formatar o preço em uma consulta Oracle, use
TO_CHAR
:SELECT TO_CHAR(price, '999999990.00'), etc.
Escolha o número de placeholders que é melhor para você e observe que o Oracle colocará um espaço extra no início do resultado. Ele deve conter um sinal de menos se o número for negativo, mas para zero/positivo é um espaço. Para se livrar do espaço use o
FM
modificador no TO_CHAR
:SELECT TO_CHAR(price, 'FM999999990.00'), etc.