• 技术文章 >常见问题 >Python常见问题

    python默认保留几位小数

    silencementsilencement2020-02-10 14:22:38原创5616

    处理一个数据文件,发现数据不一致,小数点后有三位、四位、六位、更多位。部分还进行四舍五入。

    需要对数据文件进行处理。如果有效位超过6位,则四舍五入。如果小于6位,则保持原来的数字不变。

    考虑两种情况:

    小数点后无数字:判断数字有效位(len(str(num))-1)是否超过6,超过则通过整除去尾,没有则返回

    小数点后有数字:判断数字有效位(len(str(num))-1)是否超过6,超过则四舍五入round(f, n - len(str(int(f)))),没有则返回。

    推荐学习《Python教程

    代码:

    def format(f, n):
        if round(f)==f:
            m = len(str(f))-1-n
            if f/(10**m) ==0.0:
                return f
            else:
                return float(int(f)/(10**m)*(10**m))
        return round(f, n - len(str(int(f)))) if len(str(f))>n+1 else f

    注意:

    round不是简单的四舍五入

    round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出

    现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是

    使用四舍五入的规则,但是碰到.5的这样情况,如果要取舍的位数前的小树是奇数,则直接舍弃,如果偶数这向上取舍。看下面的示例:

    >>> round(2.635, 2)
    2.63
    >>> round(2.645, 2)
    2.65
    >>> round(2.655, 2)
    2.65
    >>> round(2.665, 2)
    2.67
    >>> round(2.675, 2)
    2.67
    专题推荐:float
    上一篇:python为啥可以交互式 下一篇:python如何判断一个文件的行数

    相关文章推荐

    • python如何截取字符串最后的几位数字• python如何将字符转换为数字• python能判断数字类型吗• python怎么将字符串转换为数字

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网