Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在Postgres中,将数字/实数/双精度转换为字符/文本时出现的混乱_Postgresql - Fatal编程技术网

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)
来限制十进制数字的数量,除法可能会产生很多这样的数字。如果你尝试
*
而不是
/
,你就会明白我的意思