zoukankan      html  css  js  c++  java
  • 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
    
    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

    ## 欢迎交流讨论

  • 相关阅读:
    bzoj3295: [Cqoi2011]动态逆序对
    bzoj3262: 陌上花开
    bzoj1176: [Balkan2007]Mokia
    bzoj1935: [Shoi2007]Tree 园丁的烦恼
    [APIO / CTSC2007]数据备份 --- 贪心
    [APIO2007]风铃 --- 贪心
    [NOI2015]寿司晚宴 --- 状压DP
    [NOI2007]货币兑换 --- DP + 斜率优化(CDQ分治)
    [NOI2009]诗人小G --- DP + 决策单调性
    [HNOI2008]玩具装箱TOY --- DP + 斜率优化 / 决策单调性
  • 原文地址:https://www.cnblogs.com/qi-yuan-008/p/12384924.html
Copyright © 2011-2022 走看看