【发布时间】:2017-02-15 09:51:06
【问题描述】:
我必须将字符串转换为浮点元组。 在 Python 2.7 中,它给出了正确的转换,但在 Python 中,情况不同。
我希望在 Python 2.6 中具有相同的行为
谁能帮助我为什么这在 Python 2.6 中不一样以及如何在 Python 2.6 中做。
Python 2.6
>>> a
'60.000,494.100,361.600,553.494'
>>> eval(a)
(60.0, 494.10000000000002, 361.60000000000002, 553.49400000000003)
>>> import ast
>>> ast.literal_eval(a)
(60.0, 494.10000000000002, 361.60000000000002, 553.49400000000003)
>>>
>>> for i in a.split(","):
... float(i)
...
60.0
494.10000000000002
361.60000000000002
553.49400000000003
>>>
Python 2.7
>>> a
'60.000,494.100,361.600,553.494'
>>> eval(a)
(60.0, 494.1, 361.6, 553.494)
>>> import ast
>>> ast.literal_eval(a)
(60.0, 494.1, 361.6, 553.494)
>>>
>>> for i in a.split(","):
... float(i)
...
60.0
494.1
361.6
553.494
不好看
[编辑 2]
我只是打印价值和条件
print fGalleyTopRightOddX, ">=", tLinetextBbox[2], fGalleyTopRightOddX>=tLinetextBbox[2]
361.6 >= 361.6 False
我从字符串计算 tLinetextBbox 值,这是 361.60000000000002 和 fGalleyTopRightOddX 值是 361.6
我正在开发 Python Django 项目,其中 apache 是服务器。
-
fGalleyTopRightOddX即361.6是在apache环境下计算的 -
tLinetextBbox即361.60000000000002在 cmd 上计算意味着我将fGalleyTopRightOddX传递给由命令line os.system运行的程序
[编辑 3] 再多一点信息,
当我在文本文件中记录字典时,我得到 tLinetextBbox vale 为 361.59999999999997
【问题讨论】:
-
在这两种情况下,您都得到了正确的值,只是 Python 2.7 improved how floating point numbers are displayed。 (提示“每个计算机科学家都应该知道的关于浮点数的知识”链接)
-
@kennytm 也许更好的说法是,在这两种情况下,你得到了相同的 incorrect 值。
-
@kennytm 和 Johan:谢谢,但我仍然得到错误的答案。我更新了问题,你能再看看吗?
标签: python python-2.7 floating-point python-2.6