Round float to x decimals?

前端 未结 4 1092
一向
一向 2020-11-28 05:19

Is there a way to round a python float to x decimals? For example:

>>> x = roundfloat(66.66666666666, 4)
66.6667
>>>x = roundfloat(1.295782         


        
4条回答
  •  失恋的感觉
    2020-11-28 05:31

    Default rounding in python and numpy:

    In: [round(i) for i in np.arange(10) + .5]
    Out: [0, 2, 2, 4, 4, 6, 6, 8, 8, 10]
    

    I used this to get integer rounding to be applied to a pandas series:

    import decimal

    and use this line to set the rounding to "half up" a.k.a rounding as taught in school: decimal.getcontext().rounding = decimal.ROUND_HALF_UP

    Finally I made this function to apply it to a pandas series object

    def roundint(value):
        return value.apply(lambda x: int(decimal.Decimal(x).to_integral_value()))
    

    So now you can do roundint(df.columnname)

    And for numbers:

    In: [int(decimal.Decimal(i).to_integral_value()) for i in np.arange(10) + .5]
    Out: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

    Credit: kares

提交回复
热议问题