hive的floor函数,ceil函数,round函数hive的floor函数和ceil函数与python、sql等⼀致
1. floor函数
select floor(1.4)  # 结果是:1
2. ceil函数
select ceil(1.4)  #结果是:2
3. hive的round函数与python稍微有点差别
⾸先说hive的round:直接四舍五⼊
select round(1.455, 2)  #结果是:1.46,即四舍五⼊到⼗分位
select round(1.5)  #默认四舍五⼊到个位,结果是:2
select round(255, -1)  #结果是:260,即四舍五⼊到⼗位,此时个位是5会进位
其次说python的round:这⾥是python3,对于⼩数的情形
round(1.8)  #默认时,四舍五⼊均到个位,⼩数的话就会四舍五⼊取整了
Out[19]: 2
round(1.4)  #默认时,四舍五⼊均到个位,⼩数的话就会四舍五⼊取整了
Out[22]: 1
round(1.345, 2)  # 未进位
Out[79]: 1.34
sql中round函数怎么使用
round(1.145, 2)  # 进位了,是不是很神奇。。。
Out[80]: 1.15
原因是:⼆进制转换造成的精度损失
from decimal import Decimal  #可⽤来查看保存的值
Decimal(1.345)
Out[65]: Decimal('1.3449999999999999733546474089962430298328399658203125')  #此时求 round(1.345, 2)是不是得到的值就是1.34了Decimal(1.145)
Out[66]: Decimal('1.145000000000000017763568394002504646778106689453125')  #此时求 round(1.145, 2)是不是得到的值就是1.15了然⽽,python3中对整数使⽤时,⽐较难理解,使⽤时需要谨慎!!!
round(35, -1) #进位了
Out[7]: 40
round(45, -1) #未进位
Out[8]: 40
round(345, -1) #未进位
Out[9]: 340
round(335, -1) #进位了
Out[10]: 340
round(355, -2) #进位了
Out[11]: 400
round(455, -2) #进位了
Out[12]: 500
必须使⽤时,最好写函数包装转化⼀下,或者将为5的精度位+1,然后再⽤round。
## 欢迎交流讨论

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。