当前位置:   article > 正文

Python函数重写及逻辑分析 之(round)_如何round函数写成逻辑的表达形式

如何round函数写成逻辑的表达形式

 大家说round不准,那就自己写个准的呗,其实不难哈哈,我这个虽然有点取巧,但结果绝对是四舍五入,嘎嘎。

我这个思路就是把原小数按小数点分成整数部分和小数部分,

然后如果n>0也就是四舍五入只在小数内发生,那么就只针对小数进行处理,如果n=0那么就是小数向整数有进位的可能,

最后四舍五入完了,把所得的整数部分和小数部分在拼回去转化为浮点

  1. def newRound(x,n=0):
  2. if isinstance(x,float) ==False: #x不是浮点
  3. result ='x = '+ str(x) +' 必须为小数 '
  4. return result
  5. if n < 0: #n为负数
  6. result ='n = '+ str(n) +' 不能小于0 '
  7. return result
  8. y = str(x) #浮点转字符串
  9. aDotNumList = y.split(".") #字符串按小数点分开成列表
  10. orderNum = aDotNumList[1] #列表只有[0]和[1],[0]是小数点前的数,[1]是小数点后的数
  11. if len(orderNum)>n:
  12. intY = int(orderNum[n]) #取第n位的数,因为python从0开始所以从n判断就可以了
  13. else:
  14. result ='n = '+str(n)+' 必须小于小数点后数字长度 '+ str(len(orderNum))
  15. return result
  16. if intY < 5 and n > 0: #四舍,n大于0
  17. aDotNumList[1]=int(orderNum[:n])
  18. elif intY >= 5 and n > 0: #五入,n大于0
  19. aDotNumList[1]=int(orderNum[:n]) + 1
  20. elif intY < 5 and n == 0 : #四舍,n等于0
  21. aDotNumList[0] = aDotNumList[0]
  22. aDotNumList[1] = 0
  23. elif intY >= 5 and n == 0 : #五入,n等于0
  24. if x >0: #如果x为正数
  25. aDotNumList[0] = int(aDotNumList[0]) + 1
  26. else: #如果x不为正数
  27. aDotNumList[0] = int(aDotNumList[0]) - 1
  28. aDotNumList[1] = 0
  29. x = str(aDotNumList[0]) + "." + str(aDotNumList[1]) #整数部分加上小数部分
  30. result = float(x) #String转化成float
  31. return result

 

改了几次应该没什么问题,如果有问题大家联系我

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号