мне интересно, если кто-нибудь может дать мне представление о том, как следующие могут быть одинаковыми/разными в Python3:Math.floor (N) против N // 1
N // 1
и
from math import floor
floor(N)
Я попытался следующие, что, кажется, указывает, что они эквивалентны:
import math
import random
for _ in range(0, 99999):
f = random.random()
n = random.randint(-9999, 9999)
N = f * n
n_div = N // 1; n_mth = math.floor(N)
if n_div != n_mth:
print("N // 1: {} | math.floor(N): {}".format(n_div, n_mth))
else: # yes, I realize this will always run
print("Seem the same to me")
Спасибо за комментарии ниже. Обновленный тест на следующее, что ясно показывает, float // N
возвращает float
, а math.floor(N)
возвращает int
в python3. Как я понимаю, это поведение отличается от python2, где math.ceil
и math.floor
return float
s.
Также обратите внимание, как необычно/глупо было бы использовать math.ceil
или math.floor
на условиях int
вместо float
: либо функция работает на int
просто возвращает, что int
.
import math
import random
for _ in range(0, 99):
N = random.uniform(-9999, 9999)
n_div = N // 1; n_mth = math.floor(N)
if n_div != n_mth:
print("N: {} ... N // 1: {} | math.floor(N): {}".format(N, n_div, n_mth))
elif type(n_div) != type(n_mth):
print("N: {} ... N // 1: {} ({}) | math.floor(N): {} ({})".format(N, n_div, type(n_div), n_mth, type(n_mth)))
else:
print("Seem the same to me")
Это все равно. –
'//' возвращает 'float' и' floor' возвращает 'int'? –
@tobias_k в Python 3, 'math.float()' и 'math.ceil()' return 'ints' – NotAnAmbiTurner