我必须把字符串转换成浮点元组。
在Python 2.7中,它给出了正确的转换,但在Python中则不是相同的情况。
我想在Python 2.6中使用同样的行为
有人能帮助我,为什么在Python 2.6中不一样,在Python 2.6中怎么做呢?
蟒蛇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
>>>

蟒蛇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是服务器。
fGalleyTopRightOddX361.6在apache环境中计算
tLinetextBbox361.60000000000002在命令行上计算意味着我将fGalleyTopRightOddX传递给由命令运行的程序line os.system
[编辑3]
再来一个信息,
当我在文本文件中记录措辞时,我得到tLinetextBboxvale as361.59999999999997

最佳答案

为了在Python2.6中获得相同的结果,必须显式地执行以下操作:

'%.12g' % float_variable

最好创建一个自定义函数来执行以下操作:
def convert_to_my_float(float_value):
    return float('%.12g' % float_value)

根据Python's Decimal Objects文件:
在版本2.6中更改:前导和尾随空白字符是
从字符串创建十进制实例时允许。
在版本2.7中更改:构造函数的参数现在是
允许为float实例。
为什么他们的行为不同?是的,因为Python2.7中的float.__repr__()float.__str__()方法已更改。

10-07 13:03