我正在尝试调试执行非常相似的代码的两个不同的python脚本。这些脚本设置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
在两个脚本之间可能会有什么不同? (不幸的是,最初设置a
的python代码非常非常长......我不想让每个人都拥有1000多行...
答案 0 :(得分:6)
浮点数的str
表示在Python 2上截断为12位数。这是不幸的。您必须print repr(a)
以确保您看到足够的精度来唯一标识浮动。可能只有很小的差异只会出现在12位数之后。
在Python 3上,str
和repr
为浮点数生成相同的输出,因此您不会遇到此问题。