在过去的几天里,我一直在使用python来完成我的作业。我注意到一件奇怪的事-当我把字符串转换成float时,它给出的位数和字符串中的位数完全相同。在
当我用结构包()具有4个字节的浮点,并使用解包结构(),它给出了一个不完全相同的数字,但我希望是根据浮点存储的长度
例如:串-0.931973
浮点数-0.931973
从文件-0.931972980499(在struct打包并解压缩为4个字节之后)
所以我无法理解python以前从字符串中读取我的数字时是如何存储它的。在
编辑
编写float(我认为在ubuntu的python2.7中,d-double和f-float)buf = struct.pack("f", float(self.dataArray[i]))
fout.write(buf)
查询-
^{pr2}$
findNextNode-def findNextNode(self, num):
i = 0
for d in self.dataArray:
if float(num) > float(d):
i = i + 1
continue
else:
break
ptr = self.pointerArray[i]
#open the node before passing on the pointer to it
out, tptr = self.isNodeAlive(ptr)
if out == False:
node = BPlusNode(name = ptr)
node.readBPlusNode(ptr)
return node
else:
return BPlusNode.allNodes[tptr]
一旦我到达叶子,它就会读取叶子并检查数据点是否存在。在for data in node.dataArray:
if data == dataPoint:
return True
return False
因此,在本例中,它返回对datapoint-0.931972980499的搜索失败,尽管存在。在
虽然下面的代码很好-for data in node.dataArray:
if round(float(data), 6) == dataPoint:
return True
return False
我不明白为什么会这样