Python四舍五入到最接近的0.0125

Python四舍五入到最接近的0.0125,python,rounding,Python,Rounding,有人知道如何将数字四舍五入到最接近的0.0125吗?例如,有一个数字167.1131,那么它需要转换为167.1125。我曾尝试使用舍入,但它舍入为0.x.将其转换为“0.0125”,舍入该值,然后转换回: round(x/0.0125)*0.0125 将其转换为“0.0125”,四舍五入,再转换回: round(x/0.0125)*0.0125 round() 因此,由于0.0125不是round()可以处理的数字,因此您可以 在将输入的数字进行舍入之前,对其应用一个乘法,这样它就可以按

有人知道如何将数字四舍五入到最接近的0.0125吗?例如,有一个数字167.1131,那么它需要转换为167.1125。我曾尝试使用
舍入
,但它舍入为0.x.

将其转换为“0.0125”,舍入该值,然后转换回:

round(x/0.0125)*0.0125
将其转换为“0.0125”,四舍五入,再转换回:

round(x/0.0125)*0.0125
round()

因此,由于0.0125不是
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
round()

因此,由于0.0125不是
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

嗯,另一种方式?@quamrana:如果x=5,上面的结果是5,而切换“*”和“`”(我假设“另一种方式”的意思)则是0。那么,不是吗?好吧,我的错。在
if
语句中,我通常将true误认为false。这次它把
/0.0125
误认为
/80
!我会这样做:
round(x*80)/80
@quamrana:或者还有
0.125*round(x*8.0,1)
,应该正确地四舍五入(如果这很重要,并且假设乘法中避免了溢出和下溢)。嗯,反过来呢?@quamrana:如果x=5,上面的结果是5,同时切换“*”和“`”(这就是我假设的“另一种方式循环”的意思)产生0。那么,不?好吧,我的错。我通常在
if
语句中将true误认为false。这次它将
/0.0125
误认为
/80
!我会这样做:
循环(x*80)/80
@quamrana:或者还有
0.125*循环(x*8.0,1)
,应正确四舍五入(如果有必要,并假设乘法中避免溢出和下溢).可能重复的四舍五入的最终目的是什么?这个问题,也许可以在其他地方解决?可能重复的四舍五入的最终目的是什么?这个问题,也许可以在其他地方解决?你可能是指
np.arange
而不是
np.argmin
?你可能是指我吗一个
np.arange
而不是
np.argmin