關於Python中浮點數精度處理的技巧總結

2022-10-04 21:00:35 字數 367 閱讀 7024

前言

最近在使用python的時候遇到浮點數運算,發現經常會碰到如下情況:

出現上面的情況,主要還是因浮點數在計算機中實際是以二進位制儲存的,有些數不精確。

比如說: 0.1是十進位制,轉化為二進位制後它是個無限程式設計客棧迴圈的數:

0.00011001100110011001程式設計客棧0011001100

而python是以雙精度(64)位來儲存浮點數,多餘的位會被截掉,所以看到的是0.1,但在電腦上實際儲存的已不是精確的0.1,參與運算後,也就有可能點誤差,特別是金融鄰域裡面bqugpvedy,對精度更是要求更高,如何在python中獲取特定位數精度值?

【方法一】利用round方法:

【方法二】利用decimal模組:

浮點數精度問題

一 例子 首先我們去編譯器試試 double a 1.9 通過新增監視檢視a的值 會發現a的值是1.8999999 二 開始今天的學習 在最開始學c 的時候並沒有對浮點數進行很深入的學習,認為浮點不就是小數嘛,首先在c 的巨集裡面有 flt max 和 flt min 的定義,float是四位元組的...

浮點數精度之謎

話要從業務 裡的bug說起,大致過程是前端運算 2.07 1 之後結果卻是1.0699999999999998,老司機們都知道是浮點數運算的精度丟失導致的,在檢視了下具體 果然處理不當。因此我深究一番,並誕生了此文。此處重點強調兩個認識誤區 首先不得不說說浮點數的表示方法,任何數在計算機面前都會被處...

python 浮點數的精度問題

程式語言浮點數由單精度型和雙精度型兩種 單精度型佔4個位元組32位的記憶體空間只能提供七位有效數字 雙精度型佔8個位元組64位的記憶體空間可提供17位有效數字 python 3 浮點數預設的是 17位數字的精度 將精度高的浮點數轉化成精度低的浮點數,內建方法 round roud 2.873 2 2...