为什么我的float在postgreSQL中显示为0

时间:2018-09-10 07:07:37

标签: sql postgresql

我的一列process_size800089856中拥有一个值bytes

我的SQL查询说

select ((process_size*11/(1024*1024*1024))*100)/(4*3600) as Avg_wk_sum from instances where wk_id = 2

但是显示浮点数0而不是浮点数。

我什至尝试了显式投射

select ((process_size*11/(1024*1024*1024))*100)/(4*3600) :: float as Avg_wk_sum from instances where wk_id = 2

我在做什么错?如何获取浮点值?

1 个答案:

答案 0 :(得分:3)

语句中的所有值都是整数,因此实际的除法/乘法是使用整数-产生0。然后将结果0)强制转换为浮点型不会改变任何东西。

您应将process_size强制转换为浮点数,然后使用浮点数执行所有后续操作。

select ((process_size::float*11/(1024*1024*1024))*100)/(4*3600)

但是,如果您关心精确的结果,则应远离近似数据类型(例如float),而应使用numeric