Python2.6和Python2.7中的浮点值行为

Python2.6和Python2.7中的浮点值行为,python,python-2.7,floating-point,python-2.6,Python,Python 2.7,Floating Point,Python 2.6,我必须将字符串转换为浮点元组。 在Python2.7中,它给出了正确的转换,但在Python中情况不同 我希望在Python2.6中有相同的行为 有谁能帮我解释一下为什么在Python2.6中不一样,以及在Python2.6中如何做 Python 2.6 >>> a '60.000,494.100,361.600,553.494' >>> eval(a) (60.0, 494.10000000000002, 361.60000000000002, 553.49

我必须将字符串转换为浮点元组。 在Python2.7中,它给出了正确的转换,但在Python中情况不同

我希望在Python2.6中有相同的行为

有谁能帮我解释一下为什么在Python2.6中不一样,以及在Python2.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
我从字符串中计算
tlinetextbox
值,该值为
361.6000000000002
fGalletoPrightOddx
值为
361.6

我正在从事PythonDjango项目,其中,apache是服务器

  • fGalleyTopRightOddX
    361.6
    是在apache环境中计算的
  • tlinetextbox
    361.6000000000002
    在cmd上计算意味着我将
    fGalleyTopRightOddX
    传递给通过命令
    行操作系统运行的程序
  • [编辑3] 还有一个信息


    当我在文本文件中记录措辞时,我会得到
    tlinetextbox
    vale as
    361.599999997

    为了在Python 2.6中获得相同的结果,必须明确执行以下操作:

    '%.12g' % float_variable
    
    最好创建一个自定义函数来执行以下操作:

    def convert_to_my_float(float_value):
        return float('%.12g' % float_value)
    

    根据文件:

    在版本2.6中更改:前导和尾随空格字符为 从字符串创建十进制实例时允许

    在版本2.7中更改:构造函数的参数现在为 允许为浮点实例


    他们为何表现不同的答案是什么?是,因为Python 2.7中的
    float.\uuu repr\uuuuuuuuuuuuuuuuuuuuuuu()
    float.\uuuuuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。(提示“每个计算机科学家都应该知道的关于浮点数的知识”链接)@kennytm最好说,在这两种情况下,你得到了相同的错误值。@kennytm和Johan:谢谢,但我仍然得到了错误的答案。我更新了问题,你能再看一次吗?Thanx,但我还是得到了错误的答案。我更新了问题,你能再看一下吗?我想我还是不明白你的问题。为什么不从
    os
    命令中计算值
    tlinetextbox
    ,从我提到的函数中获取所需的值,并将返回的值传递给您的命令?您的函数不工作,
    >>convert_to_my_float(361.6000000000002)361.6000000000002>>convert_to_my_float(361.6)361.6000000000002
    我在有问题的Edit3中添加了一些信息。你能看一下吗?你的错误是什么?是不是
    类型错误:需要浮点参数,而不是str
    ?如果是,请在传递到函数之前将其强制转换为
    float
    float('361.6000000000002')