sql >> Base de Datos >  >> RDS >> Oracle

Almacenamiento de ceros finales en la base de datos con JPA y Oracle

No puedes resolverlo, y yo sugeriría que no es un problema. Así es como Oracle almacena NUMBER valores:con la menor precisión necesaria. Si ingresó el precio como 4.00 se almacenaría como 4 .

Tenga en cuenta que Java tampoco tendrá dos decimales por defecto cuando muestre el valor. Debe especificar el número de lugares decimales.

Y, si es posible, usaría BigDecimal en lugar de float por el precio El float el tipo no es preciso. Una alternativa es usar uno de los tipos enteros (int o long ) y administre los lugares decimales usted mismo.

Para formatear el precio para que se muestre en su código Java, use String.format("%.2f", price) .

Para dar formato al precio en una consulta de Oracle, use TO_CHAR :

SELECT TO_CHAR(price, '999999990.00'), etc.

Elija la cantidad de marcadores de posición que sea mejor para usted y tenga en cuenta que Oracle colocará un espacio adicional al comienzo del resultado. Debe tener un signo menos si el número es negativo, pero para cero/positivo es un espacio. Para deshacerse del espacio use el FM modificador en el TO_CHAR :

SELECT TO_CHAR(price, 'FM999999990.00'), etc.