>> 2/21.0Это предназначено? Я сильно помню, что более ранние версии возвращались int/int=in" />

Целочисленное деление Python дает float

python integer python-3.x division

142572 просмотра

4 ответа

Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0

Это предназначено? Я сильно помню, что более ранние версии возвращались int/int=int? Что мне делать, есть ли новый оператор деления или я должен всегда разыгрывать?

Автор: Jonas Byström Источник Размещён: 29.07.2019 08:55

Ответы (4)


253 плюса

Решение

Взгляните на PEP-238 : смена оператора подразделения

Оператор // будет доступен для однозначного запроса на разделение этажа.

Автор: Brandon E Taylor Размещён: 15.08.2009 09:51

52 плюса

Ой, сразу нашел 2//2.

Автор: Jonas Byström Размещён: 15.08.2009 09:50

35 плюса

Надеюсь, это может помочь кому-то мгновенно.

Поведение оператора деления в Python 2.7 и Python 3

В Python 2.7: по умолчанию оператор деления возвращает целочисленный вывод.

чтобы получить результат в двойном кратном 1,0, чтобы «дивиденд или делитель»

100/35 => 2 #(Expected is 2.857142857142857)
(100*1.0)/35 => 2.857142857142857
100/(35*1.0) => 2.857142857142857

В Python 3

// => used for integer output
/ => used for double output

100/35 => 2.857142857142857
100//35 => 2
100.//35 => 2.0    # floating-point result if divsor or dividend real
Автор: VijayNaidu Размещён: 02.07.2017 06:57

20 плюса

В принятом ответе уже упоминается PEP 238 . Я просто хочу добавить быстрый взгляд за кулисы для тех, кто интересуется происходящим, не читая весь ПКП.

Карты Python операторы , такие как +, -, *и /к специальным функциям, таким образом, что , например , что a + bэквивалентно

a.__add__(b)

Что касается деления в Python 2, то по умолчанию существует только то, /что сопоставляется, __div__и результат зависит от типов ввода (например int, float).

В Python 2.2 появилась __future__функция division, которая изменила семантику деления следующим образом (TL; DR из PEP 238):

  • /карты, на __truediv__которые необходимо «возвращать разумное приближение математического результата деления» (цитата из PEP 238)
  • //карты __floordiv__, которые должны вернуть результат с/

В Python 3.0 изменения PEP 238 стали поведением по умолчанию, и __div__в объектной модели Python больше нет специального метода .

Если вы хотите использовать один и тот же код в Python 2 и Python 3, используйте

from __future__ import division

и придерживаться семантики PEP 238 /и //.

Автор: code_onkel Размещён: 05.09.2016 02:18
Вопросы из категории :
32x32