我的列之一 process_size
包含一个值 800089856
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
我做错了什么?如何获取浮点值?
最佳答案
语句中的所有值都是整数,因此实际的除法/乘法是使用整数执行的 - 生成 0。然后将结果 (0
) 转换为一个不会改变任何东西的 float 。
您应该将process_size
转换为 float ,然后所有后续操作都使用 float 进行。
select ((process_size::float*11/(1024*1024*1024))*100)/(4*3600)
但是,如果您关心精确的结果,则应远离 float 等近似数据类型,而应使用 numeric
。
关于sql - 为什么我的 float 在postgreSQL中显示为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52252679/