天天看點

python4學習筆記_數字

今天發現一個問題,ide執行

3.1415*2

6.283

print(3.1415*2)

6.283

兩個結果一樣,書上寫的是沒有print 是全部精度的值6.28300000000004

但是我實際執行兩個值是一樣的,不知道是不是python3.6版本修改了.

π

math.pi

3.141592653589793

math.pi*2

6.283185307179586

print(math.pi*2)

6.283185307179586

math.ceil(x)

傳回 x 的上限,即大于或者等于 x 的最小整數。如果 x 不是一個浮點數,則委托 x.ceil(), 傳回一個 Integral 類的值。

x=12.2

math.ceil(x)

13

math — 數學函數

該子產品始終可用。它提供對C 語言标準定義的數學函數的通路。

這些函數不适用于複數;如果你需要計算複數,請使用 cmath 子產品中的同名函數。将支援計算複數的函數區分開的目的,來自于大多數開發者并不願意像數學家一樣需要學習複數的概念。得到一個異常而不是一個複數結果使得開發者能夠更早地監測到傳遞給這些函數的參數中包含複數,進而調查其産生的原因。

該子產品提供了以下函數。除非另有明确說明,否則所有傳回值均為浮點數。

數論與表示函數

math.ceil(x )

傳回 x 的上限,即大于或者等于 x 的最小整數。如果 x 不是一個浮點數,則委托 x.ceil(), 傳回一個 Integral 類的值。

math.copysign(x,y )

傳回一個基于 x 的絕對值和 y 的符号的浮點數。在支援帶符号零的平台上,copysign(1.0, -0.0) 傳回 -1.0.

math.fabs(x )

傳回 x 的絕對值。

math.factorial(x )

傳回 x 的階乘。當x不是整數或者是負數時,引發 ValueError 異常。

math.floor(x )

傳回x的最小值,小于或等于x的最大整數。如果x不是float,則委托給x.floor(),它應該傳回一個 Integral值。

math.fmod(x,y )

傳回,由平台C庫定義。請注意,Python表達式可能不會傳回相同的結果。C标準的目的是精确地(數學地,無限精度)等于某個整數n,使得結果具有與x相同的符号和小于的數量。Python 傳回帶有y符号的結果,并且可能無法完全計算浮點參數。例如,是的,但是Python的結果是,它不能完全表示為浮點數,并且是令人驚訝的。出于這個原因,功能fmod(x, y)x % yfmod(x, y)x - n*yabs(y)x % yfmod(-1e-100, 1e100)-1e-100-1e-100 % 1e1001e100-1e-1001e100fmod()使用浮點數時通常首選,而使用整數時則首選Python 。x % y

math.frexp(x )

傳回尾數和x的指數作為對。 m是一個浮點數,e是一個完整的整數。如果X為零,退貨,否則。這用于以便攜方式“分離”浮動的内部表示。(m, e)x == m * 2**e(0.0, 0)0.5 <= abs(m) < 1

math.fsum(可疊代的)

傳回疊代中的精确浮點值。通過跟蹤多個中間部分和來避免精度損失:

sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])

0.9999999999999999

fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])

1.0

該算法的準确性取決于IEEE-754算術保證和舍入模式為半偶的典型情況。在某些非Windows版本中,底層C庫使用擴充精度添加,并且有時可能會使中間和加倍,導緻它在最低有效位中關閉。

有關進一步讨論和兩種替代方法,請參閱ASPN烹饪手冊中的準确浮點求和方法。

math.gcd(a,b )

傳回整數a和b的最大公約數。如果 a或b非零,那麼值是最大的正整數,它将a和b分開。 回報 。gcd(a, b)gcd(0, 0)0

3.5 新版功能.

math.isclose(a,b,*,rel_tol = 1e-09,abs_tol = 0.0 )

True如果值a和b彼此接近則傳回, False否則傳回。

根據給定的絕對和相對容差确定兩個值是否被認為是接近的。

rel_tol是相對容差 - 它是a和b之間允許的最大內插補點,相對于a或b的較大絕對值。例如,要設定5%的容差,請通過rel_tol=0.05。預設容差為1e-09,確定兩個值在大約9個十進制數字内相同。 rel_tol必須大于零。

abs_tol是最小絕對容差 - 對于接近零的比較很有用。abs_tol必須至少為零。

如果沒有錯誤發生,結果将是: 。abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

的IEEE 754特殊值NaN,inf以及-inf将根據IEEE規則處理。具體而言,NaN不被認為接近任何其他值,包括NaN。 inf并且-inf隻被認為接近自己。

3.5 新版功能.

參見 PEP 485 - 用于測試近似相等的函數

math.isfinite(x )

傳回True如果X既不是無窮大也不是NaN和 False其他。(注意,這0.0 被認為是有限的。)

3.2 新版功能.

math.isinf(x )

True如果x是正無窮大,則傳回, False否則傳回。

math.isnan(x )

傳回True如果X為NaN(非數字),以及False其他。

math.ldexp(x,i )

傳回。這基本上是功能的反轉 。x * (2**i)frexp()

math.modf(x )

傳回x的小數和整數部分。兩個結果都帶有x的符号并且是浮點數。

math.remainder(x,y )

傳回相對于y的IEEE 754樣式的x餘數。對于有限x和有限非零y,這是差異,其中是與商的精确值最接近的整數。如果恰好位于兩個連續整數之間,則使用最接近的偶數整數。其餘進而始終滿足。x - n*ynx / yx / ynr = remainder(x, y)abs® <= 0.5 * abs(y)

特殊情況遵循IEEE 754:尤其是 X為任何有限X,并和 提高任何非NaN的X。如果餘數運算的結果為零,則該零将與x具有相同的符号。remainder(x, math.inf)remainder(x, 0)remainder(math.inf, x)ValueError

在使用IEEE 754二進制浮點的平台上,此操作的結果始終可以完全表示:不會引入舍入錯誤。

3.7 新版功能.

math.trunc(x )

将Real值x截斷傳回到 Integral(通常為整數)。代表來 x.trunc()。

注意frexp()并且modf()它們具有與它們的C等價物不同的調用/傳回模式:它們采用單個參數并傳回一對值,而不是通過“輸出參數”傳回它們的第二個傳回值(Python中沒有這樣的東西)。

對于ceil(),floor()和modf()功能,請注意,所有的 足夠大的幅度的浮點數字是準确的整數。蟒漂浮通常攜帶沒有精度超過53位(相同于平台C雙鍵型),在這種情況下任何浮點數X與 一定沒有小數位。abs(x) >= 2**52

幂函數與對數函數

math.exp(x )

将e提升到幂x,其中e = 2.718281 …是自然對數的基數。這通常比 或更準确。math.e ** xpow(math.e, x)

math.expm1(x )

将e提升到幂x,減去1.這裡e是自然對數的基數。對于小浮點數x,減法 可導緻精度的顯着損失 ; 該 函數提供了一種将此數量計算為完全精度的方法:exp(x) - 1expm1()

from math import exp, expm1

exp(1e-5) - 1 # gives result accurate to 11 places

1.0000050000069649e-05

expm1(1e-5) # result accurate to full precision

1.0000050000166668e-05

3.2 新版功能.

math.log(x [,base ] )

使用一個參數,傳回x的自然對數(到基數e)。

使用兩個參數,将x的對數傳回給定的基數,計算方式為log(x)/log(base)。

math.log1p(x )

傳回1 + x(基數e)的自然對數。結果以對于接近零的x精确的方式計算。

math.log2(x )

傳回x的base-2對數。這通常比準确更準确 。log(x, 2)

3.3 新版功能.

參見 int.bit_length() 傳回表示二進制整數所需的位數,不包括符号和前導零。

math.log10(x )

傳回x的基數為10的對數。這通常比準确更準确。log(x, 10)

math.pow(x,y )

回歸x提升到了權力y。特殊情況盡可能遵循C99标準的附錄’F’。特别是,即使是零或NaN , 也總是傳回。如果兩個和是有限的, 是負的,而不是整數然後 是未定義的,并提高。pow(1.0, x)pow(x, 0.0)1.0xxyxypow(x, y)ValueError

與内置運算符不同,将其參數轉換為type 。使用或内置 函數來計算精确的整數幂。math.pow()floatpow()

math.sqrt(x )

傳回x的平方根。

三角函數

math.acos(x )

以弧度為機關傳回x的反餘弦值。

math.asin(x )

以弧度為機關傳回x的反正弦值。

math.atan(x )

以弧度為機關傳回x的反正切值。

math.atan2(y,x )

以弧度傳回。結果是在和之間。從原點到點的平面中的矢量使該角度為正X軸。關鍵是兩個輸入的符号都是已知的,是以它可以計算角度的正确象限。例如,并且都是,但就是。atan(y / x)-pipi(x, y)atan2()atan(1)atan2(1, 1)pi/4atan2(-1, -1)-3*pi/4

math.cos(x )

傳回 x 弧度的餘弦值。

math.hypot(x,y )

傳回歐幾裡德範數,。這是從原點到點的矢量長度。sqrt(xx + yy)(x, y)

math.sin(x )

傳回 x 弧度的正弦值。

math.tan(x )

傳回 x 弧度的正切值。

角度轉換

math.degrees(x )

将角度 x 從弧度轉換為度數。

math.radians(x )

将角度 x 從度數轉換為弧度。

雙曲函數

雙曲函數 是三角函數的類似物,它們基于雙曲線而不是圓。

math.acosh(x )

傳回x的反雙曲餘弦值。

math.asinh(x )

傳回x的反雙曲正弦值。

math.atanh(x )

傳回x的反雙曲正切。

math.cosh(x )

傳回x的雙曲餘弦值。

math.sinh(x )

傳回x的雙曲正弦值。

math.tanh(x )

傳回x的雙曲正切值。

特殊函數

math.erf(x )

傳回x處 的錯誤函數。

該erf()函數可用于計算傳統的統計函數,如累積标準正态分布:

def phi(x):

‘Cumulative distribution function for the standard normal distribution’

return (1.0 + erf(x / sqrt(2.0))) / 2.0

3.2 新版功能.

math.erfc(x )

傳回x處的互補誤差函數。的互補誤差函數被定義為 。它用于x的大值,其中從1減去會導緻重要性的損失。1.0 - erf(x)

3.2 新版功能.

math.gamma(x )

在x處 傳回Gamma函數。

3.2 新版功能.

math.lgamma(x )

在傳回Gamma函數的絕對值的自然對數X。

3.2 新版功能.

常數

math.pi

該數學 ematical常數π = 3.141592 …,可用精度。

math.e

該數學 ematical不斷é = 2.718281 …,可用精度。

math.tau

該數學 ematical常數τ = 6.283185 …,可用精度。頭是一個圓常數等于2 π,一個圓的周長與其半徑的比率。要了解有關Tau的更多資訊,請檢視Vi Hart的視訊Pi(仍然)錯誤,并開始通過吃兩倍的餡餅慶祝 Tau日!

3.6 新版功能.

math.inf

浮點正無窮大。(對于負無窮大,請使用 。)相當于。的輸出。-math.inffloat(‘inf’)

3.5 新版功能.

math.nan

浮點“非數字”(NaN)值。相當于。的輸出 float(‘nan’)。

3.5 新版功能.

CPython實作細節:該子產品主要由圍繞平台C 數學庫函數的薄包裝器組成 。特殊情況下的行為在适當情況下遵循C99标準的附錄F. 目前實作将引發 無效操作,如或 (其中C99附件F建議發出無效操作或被零除的信号),以及溢出的結果(例如 )。除非一個或多個輸入參數是NaN,否則不會從上述任何函數傳回NaN; 在這種情況下,大多數函數将傳回NaN,但(再次遵循C99附件F)此規則有一些例外,例如或 。mathValueErrorsqrt(-1.0)log(0.0)OverflowErrorexp(1000.0)pow(float(‘nan’), 0.0)hypot(float(‘nan’), float(‘inf’))

請注意,Python不會将信号NaN與安靜的NaN區分開來,并且信号NaN的行為仍未明确。典型的行為是将所有NaN視為安靜。