3

我正在尝试调试两个执行非常相似代码的不同 python 脚本。这些脚本 set a,这是一个简单的浮点数。

对于脚本 1:

ipdb> print sys.version
2.7 (r27:82500, Jul 15 2010, 13:04:38)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)]
ipdb> type(a)
<type 'float'>
ipdb> print a
17.23105
ipdb> print '{0:.4f}'.format(a)
17.2311

对于脚本 2:

ipdb> print sys.version
2.7 (r27:82500, Jul 15 2010, 13:04:38)
ipdb> print type(a)
<type 'float'>
ipdb> print a
17.23105
ipdb> print '{0:.4f}'.format(a)
17.2310

a在这两种情况下,格式怎么可能不同?a如果我已经检查过它们的值是否相同,那么这两个脚本在哪些方面可能会有所不同17.23105?(不幸的是,最初设置的python代码a非常非常长......我不想让每个人都厌倦1000多行)

4

1 回答 1

6

在 Python 2 上,浮点数的str表示会被截断为 12 位数字。这很不幸。你必须print repr(a)确保你看到足够的精度来唯一地识别浮点数。可能存在仅在 12 位数字后出现的微小差异。

在 Python 3 上,strrepr浮点数产生相同的输出,所以你不会有这个问题。

于 2013-08-09T15:14:38.950 回答