2014-11-14 62 views
-3

我怎麼能這樣整數整數?我研究過round()函數,但它沒有我想要的。如何將整數舍入到最接近的20?

5 > 0 
9 > 0 
11 > 20 
14 > 20 
19 > 20 
20 > 40 
29 > 40 
+2

最近第二十?或二十的最接近的倍數?二十分之一是0.05。 – recursive

+0

@recursive Nearest 20th –

+0

我認爲答案是將浮點數除以20,然後將結果乘以_that_乘以20. :-)'round(x/20)* 20' – mgilson

回答

3

定義拉姆達:

>>> nearest_20 = lambda x: (1 + (x-1)/20)*20 if x % 20 >= 10 else (x/20)*20 

>>> nearest_20(5) 
0 
>>> nearest_20(0) 
0 
>>> nearest_20(20) 
20 
>>> nearest_20(11) 
20 
+0

有點矯枉過正......但我喜歡它! – Barranka

+1

請勿使用lambdas來定義函數。它比常規函數定義沒有任何優勢。這讓Guido哭了。 –

+1

@MarkRansom除了讓Guido哭泣,它有什麼缺點? –

5

什麼是這樣的:

round(15.0/20.0) * 20 

或者:

round(15.3/0.05) * 0.05 

+0

第一個爲最接近的二十,第二個爲最接近的二十。 – recursive

+0

@recursive確實...我無法弄清楚(明確)OP想要什麼 – Barranka

4

如果x是要四捨五入的整數,這會給你在原來的問題要求正確舍入中途:

round(int((x + 9)/20) * 20) 

假設你四捨五入整數精確到20:

  • 5 => 0
  • 10 => 0
  • 11 => 20
  • 14 => 20
  • 19 => 20
  • 30 => 20
  • 31 => 40
相關問題