#python
#python
Вопрос:
Я хочу написать функцию, которая вводит две переменные a, b и которая возвращает a / b как значение с плавающей запятой независимо от типов a и b. Прямо сейчас я делаю это как:
def f(a, b):
return float(a)/float(b)
Есть ли лучший способ сделать это?
Комментарии:
1. Нужно ли вам поддерживать возможность того, что a и / или b могут быть строками или просто float и / или int ?
2. @Foon Я предполагаю, что a, b всегда являются числами
3. Вам нужен только один операнд, чтобы быть float , поэтому
float(a) / b
иa / float(b)
оба будут действительными.
Ответ №1:
Предполагая, что вы используете Python2, поместите это в начало файла
from __future__ import division
теперь /
всегда будет выдавать значение с плавающей точкой. Используйте //
для старого поведения.
Если вы используете Python3, то это уже поведение по умолчанию /
Ответ №2:
Вы могли бы просто принудительно преобразовать один из операндов в тип float, например:
def f(a, b):
return (a*1.0)/b
Комментарии:
1.
float(a) / b
было бы так же хорошо и должно быть более эффективным.
Ответ №3:
Это зависит. 😉
Самый безопасный способ — сделать то, что у вас есть, что будет работать для каждого числового типа, который может быть преобразован в a float
. Некоторые числовые типы, такие как Fraction
в Python 3, все равно будут возвращать a Fraction
даже с новым разделением (которое влияет только int
на s — другие типы определяют /
сами), но ваш код правильно превратит Fraction
s в floats
.