2014-03-13 75 views
-1

我有一個問題,以瞭解以下python if子句。Python浮點比較

key = '033411943470228118020044104711300230269019812152152'  
my_secret = hex(int(key[0:3]))[2:].zfill(2) + hex(int(key[4:7]))[2:].zfill(2) + hex(int(key[8:11]))[2:].zfill(2) + hex(int(key[12:15]))[2:].zfill(2) + hex(int(key[16:19]))[2:].zfill(2) 

    if float(my_secret) == 4.74678e+018: 

任何人都可以告訴我如何構造my_secret導致if子句爲true嗎?

+8

浮點運算再次出現。 – devnull

+2

'my_secret =「4.74678e + 018」'爲我工作,雖然比較花車平等是一般不一定做你可能期望的。 – geoffspear

+0

[python中的浮點相等]的可能的重複(http://stackoverflow.com/questions/4028889/floating-point-equality-in-python) –

回答

3
my_secret = 4.74678e+018 

除非不是:不要使用精確數量的浮點數!

並非所有的數字都可以表示爲浮點數,所以您可能有舍入誤差,這會在進行精確比較時導致意外的結果。

+0

我剛剛加入我的代碼我的祕密是如何派生的這就是爲什麼我不明白它的原因 – Martin

+0

@Martin在你顯示的代碼中,'my_secret'是一個字符串,它不是最好的想法,浮動.. –

+0

@Martin不,你沒有。爲了完成這個工作,你必須告訴我們什麼是「鑰匙」。 – glglgl