Мне нужно преобразовать строку в кортеж float. В Python 2.7 он дает правильное преобразование, но в Python это не тот случай.Поведение значения Float в Python 2.6 и Python 2.7
Я хочу такое же поведение в 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
Это не хорошо выглядеть
[Edit 2]
Я только значение печати и состояние
print fGalleyTopRightOddX, ">=", tLinetextBbox[2], fGalleyTopRightOddX>=tLinetextBbox[2]
361.6 >= 361.6 False
рассчитать tLinetextBbox
значения из строки и которая 361.60000000000002
и fGalleyTopRightOddX
значения 361.6
Я работаю на Python Django проекта, где апач является сервер ,
fGalleyTopRightOddX
т.е.361.6
рассчитывается в апача средеtLinetextBbox
т.е.361.60000000000002
рассчитывается на ЦМД означает, что я передатьfGalleyTopRightOddX
к программе, которая запускается командойline os.system
[Редактировать 3] Только один дополнительная информация,
когда я регистрирую дикцию i п текстовый файл, то я получаю tLinetextBbox
юдоль как 361.59999999999997
В обоих случаях у вас есть правильное значение, это просто Python 2.7 [улучшено отображение чисел с плавающей запятой] (https://docs.python.org/3/whatsnew/2.7.html#other-language-changes). (Cue «то, что каждый компьютерный ученый должен знать о номере с плавающей точкой») – kennytm
@kennytm Возможно, лучше сказать, что в обоих случаях у вас есть то же * неправильное значение *. –
@kennytm и Johan: спасибо, но я все еще ошибаюсь. Я обновил вопрос, можно снова посмотреть? –