在進行浮點數計算時它們無法精確表達出所有的十進位制小數位。
a = 4.1
b = 5.329
print(a程式設計客棧+b)
9.428999999999998
這些誤差實際上是底層cpjcxdbcwniu的浮點運算單元和ieee754浮點數算數標準的一種“特性”。python的浮點數型別儲存的資料採用的是原始表示形式,因此使用float例項時就不能避免這樣的誤差。
我們可以使用decimal模組避免這種操作(如果不介意犧牲下效能):
from decimal import decimal
a = decimal('4.1')
b =程式設計客棧 decimal('5.329')
print(a+b)
9.429
注意decimal的引數必須是字串,不能是浮點型,否則誤差依舊存在。
decimal模組的主要功能是允許控制計算過程中的各個方面,包括數字的尾數和四捨五入。
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
**********====www.cppcns.com==
0.769
getcontext也可以實現和localcontext一樣的功能
from decimal import decimal, getcontext
a = decimal(4.1)
b = decimal(5.329)
getcontext().prec = 3
print(a/b)
0.769
誤差我們不能完全消除,我們只能盡力優化演算法,使得誤差儘可能小。在大數和小數相加時要格外注意。
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執行精確的小數計算方法
本文地址:
小數計算如何精確
經常我們寫商品的 就涉及到了小數的精確性 使用bigdecimal這個類就可以做到 建立bigdecimal最好使用string的構造方法 加法運算可以使用add 減法使用subtract 乘法使用multiply 除法比較特殊 其中有這麼一個方法 public bigdecimal divide ...
00302 執行精確的浮點數運算
需要對浮點數執行精確的計算操作,並且不希望有任何小誤差的出現 decimal 模組 usr bin env pthon from decimal import decimal decimal 接受字串來表示數字,一般用於金融領域 a decimal 4.2 b decimal 2.1 c a b p...
Python執行精確的浮點數運算
有時候 上數字計算可能會有如同下面的誤差 原因 這些錯誤是由底層cpu和ieee 754標準通過自己的浮點單位去執行算術時的特徵。由於python的浮點資料型別使用底層表示儲存資料,因此你沒辦法去避免這樣的誤差。a 3.2b 2.1print a b 5.300000000000001 print ...
計算分數的精確值
使用陣列精確計算m n 0 問題分析與演算法設計 由於計算機字長的限制,常規的浮點運算都有精度限制,為了得到高精度的計算結果,就必須自行設計實現方法。為了實現高精度的計算,可將商存放在一維陣列中,陣列的每個元素存放一位十進位制數,即商的第一位存放在第一個元素中,商的第二位存放在第二個元素中.依次類推...
CGFloat 小數點的精確運算
一般用兩個cgfloat型別相減或者相加,可能會導致小數後運算不準確的現象,所以最好轉化為 nsdecimalnumber對像進行運算 效果 小數點最多顯示兩位,而且如果會將小數點後面0去掉 cgfloat a 12.345011 cgfloat b 10.01 nsdecimalnumber nu...
C C 精確計算程式執行時間(Windows)
1 標頭檔案time.h,計時函式clock clock t clock void clock t 是long型別 該函式返回從開啟這個程序到該時刻所用的時間,每秒分成clocks per sec個單元。如果經過的時間過長超出最大表示範圍,則返回 1。clock t start clock the ...
BigDecimal的精確計算
public class arithutil description 提供精確的加法運算 param bs 支援多個double return public static double add double bs return sum.doublevalue 提供精確的減法運算。param v1 被...
除法的精確計算
問題描述 輸入兩個正整數a和b,其中a和b都小於32767,求a b的值,精確到小數點後n位 1 n 200 輸入形式 輸入只有一行,包括三個整數,分別為a b和n。輸出形式 輸出只有一行,包括一個數,這個數有n位小數。樣例輸入1 10 3 10 樣例輸出1 3.3333333333 樣例輸入2 0...
js,php精確計算
js精確計算 加法函式,用來得到精確的加法結果 param arg1 param arg2 function accadd arg1,arg2 乘法函式,用來得到精確的乘法結果 param arg1 param arg2 function accmul arg1,arg2 除法函式,用來得到精確的除...
JS精確計算
加法函式,用來得到精確的加法結果 param arg1 param arg2 function accadd arg1,arg2 乘法函式,用來得到精確的乘法結果 param arg1 param arg2 function accmul arg1,arg2 除法函式,用來得到精確的除法結果 par...