怎么在python中執(zhí)行精確的小數(shù)計算?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、來鳳網(wǎng)站維護、網(wǎng)站推廣。在進行浮點數(shù)計算時它們無法精確表達出所有的十進制小數(shù)位。
a = 4.1 b = 5.329 print(a+b) 9.428999999999998
這些誤差實際上是底層CPU的浮點運算單元和IEEE754浮點數(shù)算數(shù)標(biāo)準(zhǔn)的一種“特性”。python的浮點數(shù)類型保存的數(shù)據(jù)采用的是原始表示形式,因此使用float實例時就不能避免這樣的誤差。
我們可以使用decimal模塊避免這種操作(如果不介意犧牲下性能):
from decimal import Decimal a = Decimal('4.1') b = Decimal('5.329') print(a+b) 9.429
注意Decimal的參數(shù)必須是字符串,不能是浮點型,否則誤差依舊存在。
decimal模塊的主要功能是允許控制計算過程中的各個方面,包括數(shù)字的尾數(shù)和四舍五入。
from decimal import Decimal from decimal import localcontext a = Decimal(4.1) b = Decimal(5.329) print(a/b) print('================') with localcontext() as ctx: ctx.prec = 3 print(a/b) 0.7693751172827922400071261708 ================ 0.769
getcontext也可以實現(xiàn)和localcontext一樣的功能
from decimal import Decimal, getcontext a = Decimal(4.1) b = Decimal(5.329) getcontext().prec = 3 print(a/b) 0.769
誤差我們不能完全消除,我們只能盡力優(yōu)化算法,使得誤差盡可能小。在大數(shù)和小數(shù)相加時要格外注意。
nums = [3.21e+18, 1, -3.21e+18] print(sum(nums)) print('=========================') import math res = math.fsum(nums) print(res) 0.0 ========================= 1.0
python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復(fù)的數(shù)據(jù)組合。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。