心若磐石|如何使用python进行正确的四舍五入?这个坑有点大( 二 )


我的解决方案

  • 我根据我的精度要求 , 构建精度范围所需要保留的小数点的最后一位 , 通过这个数字是否为5 , 判断是否需要向上取整
  • 举例来说 , 本案例中我只需要保留整数部分的数据 , 那么我只需要确定小数点后第一位是否是数字5就可以了
上代码
import pandas as pdimport numpy as npimport mathdf = pd.DataFrame({"除数": [1, 1, 1.5, 5, 7.5], "被除数": [2, 3, 1, 6, 3]})# 记录真实值df["真实值"] = df["除数"] / df["被除数"]# 记录整数部分df["辅助整数列"] = df["真实值"].apply(lambda x: math.modf(x)[1])# 记录小数部分,因为我的最后结果精度为只保留整数部分,所以我只需要保留一个小数点位进行判断是否需要进位操作df["辅助小数列"] = df["真实值"].apply(lambda x: str(math.modf(x)[0]).split(".")[1][0])# 小数点后的第一位是为5 , 则向上取整 , 不是5则调用原np.round就行了df["期望值修正"] = df.apply(lambda x: x.辅助整数列 + 1 if (x.辅助小数列 == "5") else np.round(x.真实值), axis=1)结果如下所示
心若磐石|如何使用python进行正确的四舍五入?这个坑有点大期望修正值已经达成
我是一名奋战在编程界的pythoner , 工作中既要和数据打交道 , 也要和erp系统 , web网站保持友好的沟通…… , 时不时的会分享一些提高效率的编程小技巧 , 在实际应用中遇到的问题以及解决方案 , 或者源码的阅读等等 , 欢迎大家一起来讨论!如果觉得写的还不错 , 欢迎点个关注点个赞 , 谢谢 。


推荐阅读