Vous ne pouvez pas le résoudre, et je dirais que ce n'est pas un problème. C'est ainsi qu'Oracle stocke NUMBER
valeurs :avec le moins de précision nécessaire. Si vous avez saisi le prix sous la forme 4.00
il serait stocké sous 4
.
Notez que Java n'utilisera pas non plus deux décimales par défaut lors de l'affichage de la valeur. Vous devez spécifier le nombre de décimales.
Et, si possible, j'utiliserais BigDecimal
au lieu de float
pour le prix. Le float
le type n'est pas précis. Une alternative consiste à utiliser l'un des types entiers (int
ou long
) et gérez vous-même les décimales.
Pour formater le prix à afficher dans votre code Java, utilisez String.format("%.2f", price)
.
Pour formater le prix dans une requête Oracle, utilisez TO_CHAR
:
SELECT TO_CHAR(price, '999999990.00'), etc.
Choisissez le nombre d'espaces réservés qui vous convient le mieux et notez qu'Oracle mettra un espace supplémentaire au début du résultat. Il est censé contenir un signe moins si le nombre est négatif, mais pour zéro/positif, c'est un espace. Pour vous débarrasser de l'espace utilisez le FM
modificateur dans le TO_CHAR
:
SELECT TO_CHAR(price, 'FM999999990.00'), etc.