Eu tenho um '9.999999999'::double precision
número e quero convertê-lo decimal(8,2)
sem arredondamento. O resultado que estou esperando é 9.99
. Até agora tentei:
select trunc('9.999'::double precision::numeric(8,3), 2)
e funciona, mas eu tenho que saber o número de dígitos de precisão para o valor de precisão dupla, porque se houver mais 9
, ::numeric(8,3)
o arredondará automaticamente para 10.000
.
O que posso fazer sobre isso?
Por que não simplesmente fazer o seguinte?
Dessa forma, você apenas o trunca, sem assumir nada sobre os dígitos.
Notas:
numeric
- este é o tipo que o parser interpreta9.99999
, por exemplo:Ou seja, use um ilimitado
numeric
em seu exemplo. Isso acomodaria todos os seus dígitos.