2012-06-10 2 views

ответ

4
In [2]: 1.0/50000 
Out[2]: 2e-05 

Примечание .0. Он гарантирует, что 1.0 является литералом с плавающей запятой, а не целочисленным.

Другой способ написать это следующим образом:

In [3]: float(1)/50000 
Out[3]: 2e-05 

То, что вы сейчас первый использует целочисленное деление для вычисления 1/50000. Результатом этого деления является целое число 0, которое затем преобразуется в значение с плавающей запятой (0.0).

Наконец, обратите внимание, что ваш текущий код будет корректно вести себя в Python 3 (и float() является излишним). Это связано с PEP 238.

+2

'1./50000' - это все, что действительно нужно. – martineau

2

Использование 1.0/50000 или float(1)/50000. То, как вы это сделали, к тому времени, когда вы конвертируете в float, разделение уже сделано, и слишком поздно получить дополнительную точность.

2

Входные аргументы должны быть поплавки должны быть разделены как поплавки:

float(1)/float(50000) 

Или

1./50000 

Десятичный бросает 1 поплавком. Если одно из входных значений является поплавком, операция деления будет также плавать.

Что вы делали, это деление целых чисел на 0, а затем наложение 0 на float как '0.0'.

3

использование Питон 3.x

>>> 1/50000 
2e-05 

или Python 2.x

>>> from __future__ import division 
2

Просто преобразовать один из аргументов в поплавка:

>>> 1/float(50000) 
2e-05 
Смежные вопросы