Jaka jest różnica między ' / 'i'//', gdy używane są do podziału?
Czy jest korzyść z używania jednego nad drugim? W Pythonie 2 oba wydają się zwracać te same wyniki:
>>> 6/3
2
>>> 6//3
2
14 answers
W Pythonie 3.x, 5 / 2
zwróci 2.5
i 5 // 2
zwróci 2
. Pierwszy jest podziałem zmiennoprzecinkowym, a drugi jest podział podłogi, czasami nazywany równieżpodział liczb całkowitych.
W Pythonie 2.2 lub nowszym W 2.x linii, nie ma różnicy dla liczb całkowitych, chyba że wykonasz from __future__ import division
, co powoduje, że Python 2.x do przyjęcia 3.x zachowanie.
Niezależnie od przyszłego importu, 5.0 // 2
powróci 2.0
, ponieważ jest to piętro wynik podziału operacji.
Szczegółowy opis znajdziesz na stronie https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-28 20:29:34
Python 2.x:
Aby wyjaśnić dla Pythona 2.linia x, /
nie jest ani dzieleniem podłogi, ani dzieleniem rzeczywistym. Obecna akceptowana odpowiedź nie jest jasna w tej kwestii.
/
jest dzieleniem, gdy oba args są int
, ale jest dzieleniem, gdy jedno lub oba args są float
.
Powyższe mówi więcej prawdy i jest bardziej jasne niż drugi akapit w zaakceptowanej odpowiedzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-08 17:56:43
//
wdraża "podział podłogi", niezależnie od typu. Więc
1.0/2.0
da 0.5
, ale oba 1/2
, 1//2
i 1.0//2.0
da 0
.
Zobacz https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator dla szczegółów
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-13 08:24:27
/ --> podział zmiennoprzecinkowy
// --> podział podłogi
Pozwala zobaczyć kilka przykładów zarówno w Pythonie 2.7, jak i w Pythonie 3.5.
Python 2.7.10 vs. Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 vs. Python 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Teraz, jeśli chcesz mieć (w Pythonie 2.7) takie samo wyjście jak w Pythonie 3.5, możesz wykonać następujące czynności:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
Gdzie jako że nie ma różnicy między podziałem podłogi w zarówno w Pythonie 2.7 jak i w Pythonie 3.5
138.93//3 ---> 46.0 #Python 2.7
138.93//3 ---> 46.0 #Python 3.5
4//3 ---> 1 #Python 2.7
4//3 ---> 1 #Python 3.5
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-03 11:45:03
Jak już wszyscy odpowiedzieli, //
jest podział podłogi.
Dlaczego jest to ważne jest to, że //
jest jednoznacznym podziałem we wszystkich wersjach Pythona od 2.2, w tym Pythona 3.wersje X.
Zachowanie /
może się zmieniać w zależności od:
- Active
__future__
import or not (module-local) - opcja wiersza poleceń Pythona,
-Q old
lub-Q new
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-09 23:55:18
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-18 18:23:48
Python 2.7 i inne nadchodzące wersje Pythona:
- Dywizja (
/
)
Dzieli operand lewej ręki przez operand prawej ręki
Przykład: 4 / 2 = 2
- Podział Podłogi (
//
)
Podział operandów, gdzie wynikiem jest iloraz, w którym cyfry po przecinku są usuwane. Ale jeśli jeden z operandów jest ujemny, wynik jest floored, tzn. zaokrąglony od zera (w kierunku ujemnym nieskończoność): {]}
Przykłady: 9//2 = 4
i 9.0//2.0 = 4.0
, -11//3 = -4
, -11.0//3 = -4.0
Zarówno /
podział, jak i //
operator podziału piętra działają w podobny sposób.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-06 06:33:11
Podwójny ukośnik, //
, jest podziałem podłogi:
>>> 7//3
2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-02 19:35:01
//
jest dzieleniem podłogi, to zawsze daje całkowitą podłogę wyniku. Drugi to podział "regularny".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-08 17:19:15
ODPOWIEDŹ równania jest zaokrąglana do następnej mniejszej liczby całkowitej lub float with .0 jako punkt dziesiętny.
>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 15:26:43
Powyższe odpowiedzi są dobre. Chcę dodać jeszcze jeden punkt. Do niektórych wartości oba z nich dają ten sam iloraz. Po tym Operator dzielenia podłogi (//
) działa dobrze, ale nie operator dzielenia (/
).
- > int(755349677599789174/2)
- > 377674838799894592 #wrong answer
- > 755349677599789174 //2
- > 377674838799894587 #correct answer
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-06 04:37:50
-
//
jest dzieleniem podłogi, zawsze da ci wartość podłogi wyniku. - a drugi {[2] } jest dzieleniem zmiennoprzecinkowym.
Następstwa są różnicą między /
A //
;
Wykonałem te operacje arytmetyczne w Pythonie 3.7.2
>>> print (11 / 3)
3.6666666666666665
>>> print (11 // 3)
3
>>> print (11.3 / 3)
3.7666666666666667
>>> print (11.3 // 3)
3.0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-17 11:56:14
Python 3.X
Aby uzupełnić kilka poprzednich odpowiedzi.
Warto zaznaczyć, że:
A / / b
-
Jest dzieleniem podłogi . Jak w:
Matematykafloor (A / b)
-
Nie jest int division . Jak w:
Int (a / b)
-
Nie jest Okrągły do 0. Jak w:
Round (A / b, 0)
Jako konsekwencja, sposób zachowania się jest inny, jeśli chodzi o liczby pozytywne i negatywne, jak w poniższym przykładzie:
1 / / 2 jest 0, jak w:
Matematykafloor (1/2)
-1 / / 2 to -1, jak w:
Matematykafloor (-1 / 2)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-13 20:25:01
5.0//2
powoduje to 2.0
, a nie 2
, Ponieważ typ zwracany wartości zwracanej z operatora //
jest zgodny z regułami Pythona coercion (type casting).
Python Promuje konwersję niższego typu danych (integer) na wyższy typ danych (float), aby uniknąć utraty danych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-09 22:55:33