Zauważyłem niedawno, że int()
zaokrągla liczbę zmiennoprzecinkową w kierunku 0, podczas gdy dzielenie liczb całkowitych zaokrągla liczbę zmiennoprzecinkową w kierunku jej podłogi.
na przykład:
-7 // 2 = -4
int(-7/2) = -3
Przeczytałem dokumentację, która określa:
klasa int (x, podstawa = 10)
Zwraca liczbę całkowitą zbudowaną z liczby lub łańcucha x lub zwraca 0, jeśli nie podano> argumentów. Jeśli x jest liczbą, zwróć x. int (). W przypadku liczb zmiennoprzecinkowych powoduje to skrócenie do zera.
i:
podział podłogi
Podział matematyczny zaokrąglany w dół do najbliższej liczby całkowitej. Operatorem podziału podłogi jest //. Na przykład wyrażenie 11 // 4 ma wartość 2 w przeciwieństwie do 2,75 zwróconego przez zmiennoprzecinkowe dzielenie rzeczywiste. Zauważ, że (-11) // 4 to -3, ponieważ jest to -2,75 zaokrąglone w dół. Zobacz PEP 238.
Ale wydaje mi się nielogiczne, że 2 podobne operacje (dzielenie zmiennoprzecinkowe na liczbę całkowitą) powinny zwracać różne wyniki.
Czy jest jakaś motywacja do różnic między funkcjami?
Dziękuję Ci.