欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python執(zhí)行精確的小數(shù)計算方法

 更新時間:2019年01月21日 09:56:06   作者:yangjiajia123456  
今天小編就為大家分享一篇python執(zhí)行精確的小數(shù)計算方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在進(jìn)行浮點數(shù)計算時它們無法精確表達(dá)出所有的十進(jìn)制小數(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執(zhí)行精確的小數(shù)計算方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中celery的使用

    Python中celery的使用

    Celery是一個簡單、靈活且可靠的,處理大量消息的分布式系統(tǒng),專注于實時處理的異步任務(wù)隊列,同時也支持任務(wù)調(diào)度。接下來通過本文給大家介紹Python中celery的使用詳解,感興趣的朋友一起看看吧
    2021-08-08
  • python中的迭代器,生成器與裝飾器詳解

    python中的迭代器,生成器與裝飾器詳解

    大家好,本篇文章主要講的是python中的迭代器,生成器與裝飾器詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • python wordcloud庫實例講解使用方法

    python wordcloud庫實例講解使用方法

    這篇文章主要介紹了python wordcloud庫實例,詞云通過以詞語為基本單位,更加直觀和藝術(shù)地展示文本。wordcloud是優(yōu)秀的詞云展示的python第三方庫
    2022-12-12
  • python逆向入門教程

    python逆向入門教程

    這篇文章主要介紹了python逆向入門教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Python實現(xiàn)深度遍歷和廣度遍歷的方法

    Python實現(xiàn)深度遍歷和廣度遍歷的方法

    今天小編就為大家分享一篇Python實現(xiàn)深度遍歷和廣度遍歷的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python 字符串處理特殊空格\xc2\xa0\t\n Non-breaking space

    Python 字符串處理特殊空格\xc2\xa0\t\n Non-breaking space

    今天遇到一個問題,使用python的find函數(shù)尋找字符串中的第一個空格時沒有找到正確的位置,下面是解決方法,需要的朋友可以參考下
    2020-02-02
  • 怎樣用cmd命令行運行Python文件

    怎樣用cmd命令行運行Python文件

    這篇文章主要介紹了怎樣用cmd命令行運行Python文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python二維列表的創(chuàng)建、轉(zhuǎn)換以及訪問詳解

    Python二維列表的創(chuàng)建、轉(zhuǎn)換以及訪問詳解

    列表中的元素還可以是另一個列表,這種列表稱為多為列表,只有一層嵌套的多維列表稱為二維列表,下面這篇文章主要給大家介紹了關(guān)于Python二維列表的創(chuàng)建、轉(zhuǎn)換及訪問的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Python彩色化Linux的命令行終端界面的代碼實例分享

    Python彩色化Linux的命令行終端界面的代碼實例分享

    美化Linux的terminal終端顯示的方法多種多樣,這里我們給出一個利用Python彩色化Linux的命令行終端界面的代碼實例分享,包括一個Linux下簡便執(zhí)行Python程序的方法,需要的朋友可以參考下
    2016-07-07
  • Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息并入庫

    Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息并入庫

    本文主要介紹了利用Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息的功能,并將抓取到的信息入庫。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-02-02

最新評論