2015-03-21 3 views
0

Я написал эти простые строки и запустил их на python 2/3.Различия в float в python2 и python3?

i=1.194857193845710948754654 
print(len(str(i))) 

У меня есть два разных выхода. В чем причина этого? и как я мог добиться того же выхода в python2?

Выход python2:

>>> 13 

Выход python3:

>>> 18 
+0

Посмотрите на [плавающей запятой Числа] (http://stackoverflow.com/q/20473968/4014959) –

+0

большой, это помогает мне много, спасибо! – fu2y

ответ

0

Это из-за различной реализацией str() для поплавка, как можно легко проверить.

Фактическая точность поплавка - то же самое.

 
$ python2 
Python 2.7.9 
>>> i=1.194857193845710948754654 
>>> i 
1.1948571938457109 
>>> str(i) 
'1.19485719385' 
>>> 
 
$ python3 
Python 3.4.3 
>>> i=1.194857193845710948754654 
>>> i 
1.1948571938457109 
>>> str(i) 
'1.1948571938457109' 
>>> 
+0

большое спасибо, это решило мою проблему. Я не думал, что преобразование строк может быть ограничивающим фактором :) – fu2y

Смежные вопросы