簡體   English   中英

Python舍入到最接近的.0125

[英]Python round to nearest .0125

有人知道如何將數字四舍五入到最接近的.0125嗎? 例如,有一個數字167.1131,則需要將其轉換為167.1125。 我嘗試用round入法將其roundround到0.x。

將其轉換為“ 0.0125's”,四舍五入,然后轉換回:

round(x/0.0125)*0.0125

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
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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM