2016-01-21 11 views
0

Новое на python и написание простого кода для преобразования Фаренгейта в Celcius.Математические операции в Python

Может кто-нибудь сказать мне, почему эти две строки кода дают разные результаты?

cConvert = (number - 32)/(9/5) 

cConvert = (number - 32)/1.8 

9/5 = 1,8, но как я могу написать код без необходимости самостоятельно вычислять 9/5?

Благодаря

+1

это происходит потому, что '9/5' приводит к междунар. поэтому вы можете изменить этот тип возвращаемого значения, указав значение для float –

ответ

0

Если вы используете Python 2, целочисленное деление производит целочисленный результат, поэтому вам нужно преобразовать один или оба из операндов в float, чтобы получить желаемый результат. В Python 3 целочисленное деление дает результат float (даже если результат является точным целым числом), поэтому в Python 3 явно не требуется преобразование в float.

Попробуйте следующее:

cConvert = (number - 32)/(float(9)/5) 

Или:

cConvert = (number - 32)/(9.0/5) 

Они должны дать вам результат вы ожидаете, как в Python 2 и Python 3.

0

Вы должны изменить 9 или 5 в float как 9,0/5 или 9/5,0, или обоих. Если нет, то 9/5 возвращает целую часть результата, 1.

1

В Python 2, это ИНТ результат:

>>> 9/5 
1 

Но это результат поплавок:

>>> 9/5.0 
1.8 

Как заключается в следующем:

>>> 9.0/5 
1.8 

Так добавить .0 к одному из opperands в уравнениях, чтобы ю e операция происходит как плавающие.

1

Предполагая, что это Python 2, вы можете исправить это либо явно с помощью float литералов 9./5 или 9/5. или 9./5. (вы можете добавить 0 после ., если вам нравится, но это не обязательно, а завершающая точка делает float литералов сама по себе), или вы можете перейти к семантике Py3. Ваш код работает точно так, как написано, если добавить:

from __future__ import division 

в верхней части исходного файла to get Py3 division rules. Если вы хотите разделение полов, вы можете использовать 9 // 5, но в остальном, с разделом Py3, int/int всегда приводит к float.

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