Python舍入到最接近的.0125

时间:2018-02-06 08:47:32

标签: python rounding

有谁知道如何将数字舍入到最接近的.0125?例如,数字为167.1131,则需要将其转换为167.1125。我试图用round来做,但是它会转到0.x。

3 个答案:

答案 0 :(得分:5)

将其转换为“0.0125's”,然后转换回来:

round(x/0.0125)*0.0125

答案 1 :(得分:1)

round()函数的重点是舍入到十分之一,百分之一,千分之一等 - 基本上是舍入到10的负指数。

所以,由于0.0125不是round()可以处理的数字,你可以

  • 在将输入数字赋予round之前对其输入数字应用乘法运算,以便它可以对其设计进行舍入,然后校正初始乘法。其中一个答案是这样的。
  • 或者你可以,如果你认为第一种方法看起来很复杂,用纯数学解决问题。下面的代码基本上看起来在0.0125的倍数之上实际上“太多”了多少。这个“太多”的量是除法的余数(模数)。这个除法是在整数上完成的,所以之后会有一个初始的乘法和修正,就像第一种方法一样。

第二种方法的代码:

def round_0125(number):
    mult_number = number * 10000
    remainder = mult_number % 125
    return (mult_number - remainder) / 10000

round_0125(167.1131)
#167.1125

round_0125(167.5738)
#167.5625

答案 2 :(得分:0)

value = 167.1125
dec_value = value % 1     # get decimal part
whole_value = value // 1
my_range = np.arange(0, 1, 0.0125)

distance = np.abs(dec_value - my_range)   # get the absolute distance
index = np.argmin(distance)   # find the index of smallest distance
result = whole_value + my_range[index]