当前位置 博文首页 > python中四舍五入的正确打开方式

    python中四舍五入的正确打开方式

    作者:做个不一样的小丑 时间:2021-02-06 09:01

    round()函数

    (注意:下面的我也不清楚是否正确,我只是发表一下我的观点)

    对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可
    强烈建议不要去深究,就直接得结果就好
    ndigiths可以为正数,也可以为负数,还可以为0,可以为空
    n:就是精确到第n位小数,对整数没有影响,1为精确到十分位(注意:小数就是从十分位往后推的)
    -n:就是精确到整数位,-1为精确到十位,然后就是百位千位…有小数位就全舍掉,不管多大,但会保留一个为0的小数位
    0:精确到个位,但会保留一个为0的小数位
    为空:精确到个位,没有小数位

    其他还好就这个临界点5很烦,我自己感觉得啊
    就我以前的理解要是将1.49精确到个位应该得到的是2对吧,是从右往左依次进行四舍五入吧,但python运行结果为1
    下面是小数部分的

    >>> round(1.49)
    1
    >>> round(1.5)
    2
    >>> round(0.5)
    0
    >>> round(0.51)
    1
    >>> round(0.051,1)
    0.1
    >>> round(0.05,1)
    0.1
    >>> round(0.046,1)
    0.0
    >>> round(0.25,1)
    0.2
    >>> round(0.35,1)
    0.3
    >>> round(0.251,1)
    0.3
    

    这里是整数

    >>> round(1235,-1)
    1240
    >>> round(1245,-1)
    1240
    >>> round(1234.99,-1)
    1230.0
    >>> round(1245,-2)
    1200
    

    这是我在网上查的对四舍五入的理解:
    1、同型算法:四舍六入五成双。这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数逢五的话看前一位,奇进偶不进。如1.25保留一位小数,因为2是偶数,所以是1.2。
    2、从统计学的角度,"四舍六入五成双"比"四舍五入"要科学,它使舍入后的结果有的变大,有的变小,更平均。而不是像四舍五入那样逢五就入,导致结果偏向大数。
    不清python用的是什么标准来进行四舍五入的
    我还去网上查了一下Python中对四舍五入的理解:
    在Python3中,round函数的取舍方式使用靠近最近和等距靠近偶数(ROUND_HALF_EVEN)策略
    不怎么理解,辣鸡了呀
    不去想了,再想会把我以前对四舍五入的理解都搞混了,花费我很多时间,还是不懂,害,任它去吧
    还是想建议大家就直接使用,不要理解哦,如果你是大佬就当我没说,嘿嘿

    format()函数

    如果只想在输出时按格式打印,使用format()函数就好了

    >>> format(1.45,'0.1f')
    '1.4'
    >>> format(1.35,'0.1f')
    '1.4'
    
    

    python 向上取整ceil 向下取整floor 四舍五入round

    #encoding:utf-8
    import math
    
    #向上取整
    print "math.ceil---"
    print "math.ceil(2.3) => ", math.ceil(2.3)
    print "math.ceil(2.6) => ", math.ceil(2.6)
    
    #向下取整
    print "\nmath.floor---"
    print "math.floor(2.3) => ", math.floor(2.3)
    print "math.floor(2.6) => ", math.floor(2.6)
    
    #四舍五入
    print "\nround---"
    print "round(2.3) => ", round(2.3)
    print "round(2.6) => ", round(2.6)
    
    #这三个的返回结果都是浮点型
    print "\n\nNOTE:every result is type of float"
    print "math.ceil(2) => ", math.ceil(2)
    print "math.floor(2) => ", math.floor(2)
    print "round(2) => ", round(2)
    
    

    运行结果:

    js