Red de conocimiento informático - Material del sitio web - Cómo redondear uniformemente a 2 decimales en PostgreSQL

Cómo redondear uniformemente a 2 decimales en PostgreSQL

ostgreSQL no define redondo (doble precisión, entero). En cuanto al motivo, Boo lo explicó de forma circular y requiere una versión precisa que solo funcione con números.

regreso=gt; SELECT round( float8 '3.1415927', 2);

ERROR: la función round(doble precisión, entero) no existe

regreso =gt; \df *round*

Lista de funciones

Esquema | Tipo de datos de resultado | Tipos de datos de argumento | ------- -------- ------------------ ----------------- ---- --------

pg_catalog | doble precisión | doble precisión | pg_catalog | doble precisión | p> pg_catalog | redondo | numérico | normal

pg_catalog | numérico, entero |p>

(4 filas)

; SELECT round( CAST(float8 '3.1415927' as numeric), 2

round

-------

3.14

(1 fila)

(En lo anterior, tenga en cuenta que float8 es solo un alias abreviado para doble precisión. Puede ver que PostgreSQL lo está expandiendo en la salida). Debe convertir el valor que se redondea a numérico en ambas formas de redondeo. Simplemente agregue ::numeric para una conversión abreviada, como round(val::numeric, 2). Si formatea la pantalla para ponerla redonda. Usando to_char (consulte: Funciones de formato de tipos de datos en este manual), le permite especificar el formato y le proporciona un texto que no está sujeto a ninguna rareza que el idioma de su cliente pueda hacer con los valores numéricos. Por ejemplo:

regress=gt; SELECT to_char(float8 '3.1415927', 'FM999999999.00');

to_char

------ --------

3.14

(1 fila)

to_char redondea un número como parte del formato. El prefijo FM le dice a to_char que no desea ningún relleno con espacios iniciales.