2011-03-01 67 views

回答

2

使用浮點除法。例如: -

(11.0/5) % 1 = 0.20000000000000018 

(1.0 * 11/5) % 1 = 0.20000000000000018 
1

這個怎麼樣?

>>> int(((4.0/5.0) % 1) * 10) 
8 
+0

添加一個「%10」,它適用於所有適合數字類型的輸入。 –

+0

Unleas表示該值爲負值。總是小心模數;) – markijbema

0

則可以使用int,對於通用號碼a很容易地計算:

int(10*a)%10 

但是請注意,這僅適用於正數!

如果你希望它爲負數以及工作:

int(10*a*cmp(a,0))%10*cmp(a,0) 
0

你可以做到這一點沒有浮點運算,對不對?

foo=lambda x,y: (10*(x%y))/y) 

# Demo 
>>> for i in range(20): 
... print(foo(i,7), i/7.0) 
... 
(0, 0.0) 
(1, 0.14285714285714285) 
(2, 0.2857142857142857) 
(4, 0.42857142857142855) 
(5, 0.5714285714285714) 
(7, 0.7142857142857143) 
(8, 0.8571428571428571) 
(0, 1.0) 
(1, 1.1428571428571428) 
(2, 1.2857142857142858) 
(4, 1.4285714285714286) 
(5, 1.5714285714285714) 
(7, 1.7142857142857142) 
(8, 1.8571428571428572) 
(0, 2.0) 
(1, 2.1428571428571428) 
(2, 2.2857142857142856) 
(4, 2.4285714285714284) 
(5, 2.5714285714285716) 
(7, 2.7142857142857144) 
相關問題