在Postgres中,将数字/实数/双精度转换为可变字符/文本的困惑

feng ce

用于将数字/实数/双精度转换为字符变化/文本。

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)::Double Precision::Text混淆了。

劳伦兹·阿尔伯

这些值可能会使您感到困惑,但它们是正确的。

您似乎将参数设置extra_float_digits为3(或者您正在使用JDBC,它可以为您完成此操作)。

double precision是浮点类型,因此不精确。缺省值为0时,extra_float_digits您不会注意到该值,因为该值会被截断,以便仅显示有效数字,但是如果您要求全精度,则会看到四舍五入的错误。

最后一条命令将显示许多零,因为您没有指定numeric(10,2)限制十进制数字的数目,而除法可能会产生很多零如果您尝试使用*而不是/,则会明白我的意思。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章