Postgresql 在Postgres中,将数字/实数/双精度转换为字符/文本时出现的混乱
用于将数字/实数/双精度转换为字符/文本Postgresql 在Postgres中,将数字/实数/双精度转换为字符/文本时出现的混乱,postgresql,Postgresql,用于将数字/实数/双精度转换为字符/文本 select (12.0/100)::Double Precision;# 0.12 select (12.0/100)::Double Precision::Text;# 0.119999999999999996 select 0.12::text ; # 0.12 select (12.0/100)::Numeric::Text ; #0.12000000000000000000 0.12::text是正确的,但是(12.0/100)::Numer
select (12.0/100)::Double Precision;# 0.12
select (12.0/100)::Double Precision::Text;# 0.119999999999999996
select 0.12::text ; # 0.12
select (12.0/100)::Numeric::Text ; #0.12000000000000000000
0.12::text
是正确的,但是(12.0/100)::Numeric::text
和(12.0/100)::双精度::text
令人困惑。这些值可能会让您困惑,但它们是正确的
似乎您将参数extra\u float\u digits
设置为3(或者您正在使用JDBC,它可以为您这样做)
双精度
是浮点类型,因此不精确。对于extra\u float\u digits
的默认值0,您不会注意到这一点,因为该值被截断,因此只显示有效数字,但如果您要求完全精度,您将看到舍入误差的全部优点
最后一个命令将显示许多零,因为您没有指定numeric(10,2)
来限制十进制数字的数量,除法可能会产生很多这样的数字。如果你尝试*
而不是/
,你就会明白我的意思