PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment convertir postgres double précision en numérique sans perte/troncature de données

Une façon de faire cela :

show extra_float_digits ;
 extra_float_digits 
--------------------
 3

create table float_numeric(number_fld float8);
insert into float_numeric values (21.291400909423828), (23.291400909422436);
select * from float_numeric ;
     number_fld     
--------------------
 21.291400909423828
 23.291400909422435

alter table float_numeric alter COLUMN number_fld type numeric using number_fld::text::numeric;

\d float_numeric 
             Table "public.float_numeric"
   Column   |  Type   | Collation | Nullable | Default 
------------+---------+-----------+----------+---------
 number_fld | numeric |           |          | 

select * from float_numeric ;
     number_fld     
--------------------
 21.291400909423828
 23.291400909422435