擅长:python、mysql、java
<p>对于xoring浮点数没有内置的支持。相反,您必须使用<code>struct</code>模块实现一个</p>
<pre><code>>>> from struct import pack, unpack
>>> def xor_float(f1, f2):
f1 = int(''.join(hex(ord(e))[2:] for e in struct.pack('d',f1)),16)
f2 = int(''.join(hex(ord(e))[2:] for e in struct.pack('d',f2)),16)
xor = f1 ^ f2
xor = "{:016x}".format(xor)
xor = ''.join(chr(int(xor[i:i+2],16)) for i in range(0,len(xor),2))
return struct.unpack('d',xor)[0]
>>> xor_float(10.25,10.25)
0.0
>>> xor_float(10.25,0.00)
10.25
</code></pre>
<p><strong>注意</strong>本例假设浮点数是64位浮点,Python本机支持</p>
<hr/>
<p>在着手解决这个问题之前,我应该先看看你的伪代码。伪代码中的插入符号<code>^</code>是幂而不是异或,在python中,通过<code>**</code>或<code>math.pow</code>将一个数字提升为幂(包括float)</p>