Python浮點數(小數)運算誤差的原因和解決辦法
原因解釋:
浮點數(小數)在計算機中實際是以二進位制儲存的,並不精確。
比如0.1是十進位制,轉換為二進位制後就是一個無限迴圈的數:
0.00011001100110011001100110011001100110011001100110011001100
python是以雙精度(64bit)來儲存浮點數的,後面多餘的會被砍掉,所以在電腦上實際儲存的已經小於0.1的值了,後面拿來參與運算就產生了誤差。
解決辦法:
使用decimal庫
from decimal import *
a = Decimal('4.2')
b = Decimal('2.1')
c = a * b
當精度提升的同時,也必然犧牲效能。有時候是值得的,比如在財務對資料精度要求比較高的情況
相關推薦
Python浮點數(小數)運算誤差的原因和解決辦法
原因解釋:浮點數(小數)在計算機中實際是以二進位制儲存的,並不精確。比如0.1是十進位制,轉換為二進位制後就是一個無限迴圈的數:0.00011001100110011001100110011001100110011001100110011001100python是以雙精度(64bit)來儲存浮點數的,後面多餘
呼叫Dubbo服務報以下錯誤(com.alibaba.dubbo.remoting.RemotingException),問題原因和解決辦法
2017-04-19 23:41:48,333 ERROR [com.alibaba.dubbo.remoting.transport.AbstractClient] - [DUBBO] Failed to start NettyClient LX-20161101CZV
單精度浮點數(float)加法計算出錯
它的 位數 nbsp 有效 丟失 com image 替換 原因 場景: 一個float型的變量賦值1170601,加上19000000,結果出現錯誤。 原因: float占用4個字節(32位)存儲空間,包括符號位1位,階碼位8位,尾數23位。浮點數精度與
python 浮點數保留小數
方式 decimal round logs gen 輸出 浮點數 .cn 保留 http://www.cnblogs.com/Raymon-Geng/p/5784290.html 這裏有三種方法, round(a,2) ‘%.2f‘ % a Decimal(‘5.000‘)
C之浮點數(三)
C語言 浮點數 在 C 語言中,浮點數在內存中的存儲方式為:符號位,指數,位數。float 與 double 類型的數據在計算機內部的表示法是相同的,但由於所占存儲空間的不同,其分別能夠表示的數值範圍和精度不同。如下所示: 下來我們就來講講關於浮點數的轉換:1、將浮點數轉
js的浮點(小數)數+-*/
cti spl 減法 BE 除法 str string pla 加法 //除法 function accDiv(arg1,arg2){ var t1=0,t2=0,r1,r2; try{t1=arg1.toString().split(".")[1].length}ca
JVM之浮點數(float)表示
img 但是 nbsp alt 符號 否則 形式 十進制 浮點數 1. 浮點數的組成:符號位、指數位、尾數位。 1.1 符號位: 占1位,表示正負數; 1.2 指數位: 占8位; 1.3 尾數位: 占23位。 2. 浮點數的表示: 2.1
Python學習筆記(七)運算符
變量 操作數 python 註意 算術 大於 col 使用 group 運算符 描述 == 檢查兩個操作數的值是否 相等,如果是,則條件成立,返回True != 檢查兩個操作數的值是否 不相等,如果是,則條件成立,返回True > 檢查左操作數的值
單精度浮點數(float)與雙精度浮點數(double)的區別:
1、單精度,也就是 float ,在 32 位機器上用 4 個位元組來儲存的;而雙精度double是用 8 個位元組來儲存的,這是他們最本質的區別。 2、由於儲存位不同,8位,16位他們能表示的數值的範圍就不同,也就是能準確表示的數的位數就不同。 單精度浮點的表示範圍:-3.40E+38
算法習題---3.12浮點數(UVa11809)
所有 out 範圍 open style con 32位 保存 stdin 一:題目 尷尬的非會員水印 二:題目摘要 1.int和float比較 int共32位,可以表示的最大的數為2^32次方 float雖然也是32位,但是是以指數形式保存,指數
python學習筆記(五)數值類型和類型轉換
學習 系統 oat cal 關於 trac hide sed lin Python中的數值類型有: 整型,如2,520 浮點型,如3.14159,1.5e10 布爾類型 True和False e記法: e記法即對應數學中的科學記數法 1 >>
Python+Selenium筆記(九):操作警告和彈出框
smi top web cell 錯誤 ext script ava mozilla #之前發的 driver.switch_to_alert() 這句雖然可以運行通過,但是會彈出警告信息(這種寫法3.x不建議使用) 改成 driver.switch_to.alert就不
python中list(列表)、元組和array的區別-分別什麼時候使用?
list是列表,list中的元素的資料型別可以不一樣。array是陣列,陣列中的元素的資料型別必須一樣 Python中的列表(list)類似於C#中的可變陣列(ArrayList),用於順序儲存結構。它可以方便、高效的的新增刪除元素,並且列表中的元素可以是多種型別。列表很多操作都跟元組一
Python學習筆記(一)轉碼問題的解決的解決方法:“ignore”
Python轉碼問題的解決方法:“ignore”若希望將Json檔案轉化為python形式的Unicode字串,可以如下操作unicodestr = json.loads(html.decode("gbk"))但在實際開發中,這種辦法時常會出現異常:UnicodeDecode
python爬蟲系列(3):使用Selenium和BeautifulSoup獲取12306一個月內所有車次車票情況
首先針對標題說明一下,本次的獲取資料是指定出發地和目的地之間的車次,不是整個網站所有車次。 在此操作之前,請確保自己的相關的庫都已經安裝完全,這裡可沒有教安裝庫的方法哦~~~~好的,往下走,這次的目標網頁是 https://kyfw.12306.cn/otn/leftTic
python爬蟲系列(1):使用python3和正則表示式獲取貓眼電影排行榜資料
簡述 這次打算寫一個爬蟲系列,一邊也想好好總結鞏固學習的知識,一邊做總結筆記,方便以後回憶。這次我們使用Python3和正則表示式來爬取一個簡單html頁面資訊,就從貓眼電影的排行榜單開始吧。如果讀到這篇文章的是位大神,期望您能不吝賜教,指正錯誤,如果您是小白,咋們可以一同
Python的列表(list)的命名規則和方法
第二天 List學習 List就是一個列表,就像把梯子橫著放,每一個空檔的位置可以放一些元素,整形:3,浮點型:3.14,字串:“helloworld”。每一個空檔都有一個下標(index), 從0開
Python學習筆記(3)for循環和while循環
循環語句 con while循環 art start 開始 count als 一輪 2019-02-25 (1)break語句:終止當前循環,跳出循環體。 (2)continue語句:終止本輪循環並開始下一輪循環(在下一輪循環開始前,會先測試循環條件)。 (3)fo
專案所需的應用程式未安裝,確保已安裝專案型別(.csproj)的應用程式的解決辦法
產生這個的原因其實也很簡單,細心的讀者如果開啟這個檔案的話,從列表中選擇開啟方式的時候就會發現專案檔案的開啟方式已經不是visual studio了,而是Micrisoft visual studio version selector.因此,解決的辦法就是用visual s
X64 Win7(win2008)連線SqlServer2005慢的解決辦法
資料庫版本:SQL SERVER 2005 資料庫安裝環境: Win 2003 X64 客戶端環境:Win 2008 x64 連線工具:ODBC或ado.net 測試連線時間:4-6秒 客戶端環境:Win xp x32 連線工具:ODBC或ado.net 測試連線時間:<1秒 下面是munnakumar