掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
python提供了三種浮點(diǎn)值:內(nèi)置的float與complex類型,以及標(biāo)準(zhǔn)庫的decimal.Decimal類型。

float類型存放雙精度的浮點(diǎn)數(shù),具體取值范圍依賴于構(gòu)建python的c編譯器,由于精度受限,進(jìn)行相等性比較不可靠。
如果需要高精度,可使用decimal模塊的decimal.Decimal數(shù),這種類型可以準(zhǔn)確的表示循環(huán)小數(shù),但是處理速度較慢,適合于財(cái)政計(jì)算。
簡單函數(shù)比較floatS是否相等:
def equal_float(a,b):
return abs(a-b)<=sys.float_info.epsilon
其中sys.float_info.epsilon是機(jī)器可以區(qū)分出的兩個(gè)浮點(diǎn)數(shù)的最小區(qū)別
math模塊提供了許多可用于floatS的函數(shù):
math.pi:常量3.1415926
math.pow(x,y):x的y次冪(浮點(diǎn)值)
推薦學(xué)習(xí)《Python教程》
使用math時(shí)先用import math導(dǎo)入該模塊
十進(jìn)制數(shù)字
decimal模塊可以提供固定的十進(jìn)制數(shù),精度可以自己定。要?jiǎng)?chuàng)建Decimal,要先用import decimal導(dǎo)入模塊
十進(jìn)制數(shù)是用decimal.Decimal()函數(shù)創(chuàng)建的,該函數(shù)可以接受一個(gè)整數(shù)或字符串作為參數(shù),但不能以浮點(diǎn)數(shù)作參數(shù)。如果用字符串作為參數(shù),可以使用簡單的十進(jìn)制數(shù)表示或指數(shù)表示,另外,decimal.Decimal的精確表述方式可以可靠的進(jìn)行相等性比較
(python3.1開始,使用decimal.Decimal from-float()函數(shù)將floats轉(zhuǎn)換為十進(jìn)制數(shù),以float型數(shù)作為參數(shù),并返回與該float最為接近的decimal.Decimal)

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流