Number-theoretic and representation functions¶
math.ceil(x)¶
zwraca sufit x, najmniejszą liczbę całkowitą większą lub równą x.Jeśli x nie jest zmiennoprzecinkowym, deleguje do x.__ceil__(), który powinien zwracać wartośćIntegral.
math.comb(n, k)¶
Zwraca liczbę sposobów wyboru pozycji k z n bez powtórzeń i bez zamówienia.,
ocenia don! / (k! * (n - k)!) gdyk <= n i ocenia do zera, gdyk > n.
nazywany jest również współczynnikiem dwumianowym, ponieważ jest równoważny współczynnikowi K-tego terminu w wielomianowej ekspansji ekspresji (1 + x) ** n.
podnosiTypeError jeśli któryś z argumentów nie jest liczbą całkowitą.Podnosi ValueError jeśli którykolwiek z argumentów jest ujemny.
nowość w wersji 3.8.,
math.copysign(x, y)¶math.fabs(x)¶
Return the absolute value of x.
math.factorial(x)¶
Return x factorial as an integer. Raises ValueError if x is not integral oris negative.
Deprecated since version 3.9: Accepting floats with integral values (like 5.0) is deprecated.,
math.floor(x)¶math.fmod(x, y)¶
Return fmod(x, y), zgodnie z definicją biblioteki platformy C. Zauważ, że wyrażenie x % y może nie zwracać tego samego wyniku. Intencją standardu Cstandard jest to, że fmod(x, y) być dokładnie (matematycznie; do infiniteprecision) równe x - n*ydla pewnej liczby całkowitej n takie, że wynik ma taki sam znak jak x i wielkość mniejsza niż abs(y)., x % y zwraca wynik ze znakiem y zamiast niego i może nie być dokładnie obliczalny dla argumentów float. Na przykład, fmod(-1e-100, 1e100) jest -1e-100, ale wynik -1e-100 % 1e100 jest 1e100-1e-100, który nie może być przedstawiony dokładnie jako float i zaokrągla się do zaskakującego 1e100. Z tego powodu funkcja fmod() jest ogólnie preferowana podczas pracy z plikami całkowitymi, podczas gdy x % y jest preferowana podczas pracy z liczbami całkowitymi.,
math.frexp(x)¶math.fsum(iterable)¶
zwraca dokładną sumę zmiennoprzecinkową wartości w iterable. Unikaj utraty precyzji poprzez śledzenie wielu pośrednich sum częściowych:
>>> sum()0.9999999999999999>>> fsum()1.0
dokładność algorytmu zależy od gwarancji arytmetycznych IEEE-754 i typowego przypadku, w którym tryb zaokrąglania jest o połowę parzysty., Na niektórych Nie-Windowsbuildach bazowa biblioteka C używa rozszerzonej precyzji dodawania i może czasami podwajać sumę pośrednią, powodując, że jest wyłączona w najmniej znaczącym bitie.
aby zapoznać się z dalszymi dyskusjami i dwoma alternatywnymi podejściami, zobacz aspn cookbookrecipes dla dokładnego sumowania zmiennoprzecinkowego.
math.
gcd(*integers)¶
Zwraca największy wspólny dzielnik podanych liczb całkowitych.Jeśli któryś z argumentów jest niezerowy, to zwracana wartość jest największą liczbą całkowitą, która jest dzielnikiem wszystkich argumentów., Jeśli wszystkie argumenty są zerowe, to zwracana wartość to 0. gcd() bez argumentów 0.
nowość w wersji 3.5.
zmieniono w wersji 3.9: Dodano obsługę dowolnej liczby argumentów. Dawniej wspierane były tylko dwa budynki.
math.isclose(a, b, *, rel_tol=1E-09, abs_tol=0.0)¶
zwróć True jeśli wartości a i b są blisko siebie iFalse ,
To, czy dwie wartości są uważane za bliskie, określa się zgodnie z bezwzględnymi i względnymi tolerancjami.
rel_tol jest tolerancją względną – jest to maksymalna dozwolona różnica między a i b, względem większej wartości bezwzględnej a lub b. na przykład, aby ustawić tolerancję 5%, podaj rel_tol=0.05. Domyślną wartością jest 1e-09, co zapewnia, że obie wartości są takie same w około 9 cyfrach dziesiętnych. rel_tol musi być większy od zera.
abs_tol to minimalna tolerancja bezwzględna – przydatna przy porównaniach zbliżonych do zera., abs_tol musi wynosić co najmniej zero.
Jeśli nie wystąpią żadne błędy, wynik będzie następujący:abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol).
wartości specjalne IEEE 754 zNaN,inf I-inf będą zachowywane zgodnie z zasadami IEEE. W szczególności, NaN nie jest brane pod uwagę, czy nie ma innej wartości, w tym NaN. inf I-inf są tylko blisko siebie.
nowość w wersji 3.5.,
See also
PEP 485 – A function for testing approximate equality
math.isfinite(x)¶
Return True if x is neither an infinity nor a NaN, andFalse otherwise. (Note that 0.0 is considered finite.)
New in version 3.2.
math.isinf(x)¶
Return True if x is a positive or negative infinity, andFalse otherwise.,
math.isnan(x)¶
zwróćTrue jeśli x jest NaN (Nie liczbą) iFalse w przeciwnym razie.
math.isqrt(n że n ≤ A2, lub innymi słowy sufit dokładnego pierwiastka kwadratowego N., Dla dodatniego n można to obliczyć za pomocąa = 1 + isqrt(n - 1).
nowość w wersji 3.8.
math.lcm(*integers)¶
Zwraca najmniejszą wspólną wielokrotność podanych liczb całkowitych.Jeśli wszystkie argumenty są niezerowe, wtedy zwracana wartość jest najmniejszą liczbą całkowitą, która jest wielokrotnością wszystkich argumentów. Jeśli któryś z argumentów jest zerowy, to zwracana wartość to 0. lcm() bez argumentów 1.
nowość w wersji 3.9.,
math.ldexp(x, i)¶
Returnx * (2**i). Jest to zasadniczo odwrotność funkcjifrexp().
math.modf(x)¶
zwraca ułamkową i całkowitą część x. oba Wyniki zawierają znak x i są pływakami.
zwraca następną wartość zmiennoprzecinkową po X w kierunku y.
Jeśli x jest równe y, zwraca y.
przykłady:
patrz również math.ulp().
nowość w wersji 3.9.,
math.perm(n, k=None)¶
Zwraca liczbę sposobów wyboru pozycji k Z n przedmiotów bez powtarzania i z kolejnością.
ocenia don! / (n - k)! gdyk <= n i ocenia do zera, gdyk > n.
Jeśli k nie jest podane lub nie jest None, to K domyślnie jest nand funkcja zwraca n!.
podnosiTypeError jeśli któryś z argumentów nie jest liczbą całkowitą.Podnosi ValueError jeśli którykolwiek z argumentów jest ujemny.,
nowość w wersji 3.8.
math.prod(iterable, *, start=1)¶
Oblicz iloczyn wszystkich elementów wejściowych iterable.Domyślną wartością początkową produktu jest 1.
gdy iterable jest puste, Zwraca wartość początkową. Ta funkcja jest przeznaczona specjalnie do użycia z wartościami liczbowymi i może odrzucać typy Nie-numeryczne.
nowość w wersji 3.8.
math.remainder(x, y)¶
zwraca pozostałą część X w stylu IEEE 754 w odniesieniu do y., Dla skończonego X i skończonego niezerowego y, jest to różnica x - n*y, gdzie njest najbliższą liczbą całkowitą do dokładnej wartości ilorazu x /y. Jeśli x / y jest dokładnie w połowie drogi między dwiema kolejnymi liczbami całkowitymi, to dla njest używana jedna nawet liczba całkowita. Reszta r = remainder(x,y) w ten sposób zawsze spełnia abs(r) <= 0.5 * abs(y).,
specjalne przypadki następują po IEEE 754: w szczególności remainder(x, math.inf) isx dla dowolnego skończonego X, i remainder(x, 0) Iremainder(math.inf, x) podnieść ValueError dla dowolnego nie-NaN x.Jeśli wynik operacji pozostałej wynosi zero, to zero będzie miało ten sam znak co x.
na platformach używających binarnych zmiennoprzecinkowych IEEE 754 wynik tej operacji jest zawsze dokładnie reprezentowalny: nie ma błędu zaokrąglania.
nowość w wersji 3.7.,
math.trunc(x)¶
zwracaReal wartość X obcięta doIntegral (Zwykle liczba całkowita). Delegatów dox.__trunc__().
math.ulp(x)¶
Zwraca wartość najmniej znaczącego bitu float x:
-
Jeśli x jest NaN (Nie liczbą), zwraca x.
-
Jeśli X jest ujemny, zwraca
ulp(-x). -
Jeśli x jest dodatnią nieskończonością, zwróć x.,
-
Jeśli x jest równe zeru, zwraca najmniejszy positivedenormalized reprezentowalny float (mniejszy niż minimalny positivenormalized float ,
sys.float_info.min). -
Jeśli x jest równe największemu dodatniemu zmiennoprzecinkowemu,Zwraca wartość najmniejszego znaczącego bitu X, tak że pierwszy rzut mniejszy od x wynosi
x - ulp(x). -
W Przeciwnym Razie (X jest dodatnią liczbą skończoną), Zwraca wartość najmniejszego znaczącego bitu x, tak aby pierwszy float był większy niż xis
x + ulp(x).,
ULP oznacza „Jednostka na ostatnim miejscu”.
patrz również math.nextafter() oraz sys.float_info.epsilon.
nowość w wersji 3.9.
zauważ, żefrexp() Imodf() mają inny wzorzec wywołania / zwrotu niż ich odpowiedniki w języku C: pobierają pojedynczy argument i zwracają parę wartości, zamiast zwracać drugą wartość przez 'outputparameter' (nie ma czegoś takiego w Pythonie).,
dla funkcji ceil(), floor()I modf() należy pamiętać, że wszystkie liczby punktów o wystarczająco dużej wielkości są dokładnymi liczbami całkowitymi.Pływaki Pythona zazwyczaj zawierają nie więcej niż 53 bity precyzji (tak samo jak podwójny typ platformy C), w którym to przypadku każdy float X z abs(x) >= 2**52 niekoniecznie ma ułamkowe bity.