2014-03-13 70 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