我必须把字符串转换成浮点元组。
在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是服务器。
fGalleyTopRightOddX
即361.6
在apache环境中计算tLinetextBbox
即361.60000000000002
在命令行上计算意味着我将fGalleyTopRightOddX
传递给由命令运行的程序line os.system
[编辑3]
再来一个信息,
当我在文本文件中记录措辞时,我得到
tLinetextBbox
vale 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__()
方法已更改。