Skip to main content
 首页 » 编程设计

转换为字符串时, float 的 Python 精度丢失

2025年05月04日25soundcode

我正在使用 Scapy 的 sniff 函数从 pcap 文件中读取数据包。

pkt=sniff(offline="a.pcap",count=1)[0] 

在使用 pkt.time 的 IDLE 中,我能够获取数据包的时间戳,即 1431063004.998014。但是,当我尝试使用 str(pkt.time) 或 pkt.time 将时间戳转换为字符串时,我给出了 print pkt.time,我只得到 1431063005.0。

是否可以将准确的时间戳值作为字符串获取?

注意:
我查看了 decimal 模块。但这需要精确数字。我想,如果不知道位数,那将无济于事。

请您参考如下方法:

repr 是另一种类似于 str 的方法,它可以精确转换整个 float 。无需导入 decimal 或任何东西。就像使用 str 一样使用它,它只返回一个 str 对象。

>>> x = repr(pkt.time) 
>>> type(x) 
>>> <type 'str'>