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

詳解Python中的數(shù)據(jù)精度問題

 更新時(shí)間:2022年10月16日 16:03:17   作者:Mrwhite86  
這篇文章主要為大家詳細(xì)介紹了Python中常常遇到的一些數(shù)據(jù)精度問題以及它們的解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

一、python運(yùn)算時(shí)精度問題

1.運(yùn)行時(shí)精度問題

在Python中(其他語言中也存在這個(gè)問題,這是計(jì)算機(jī)采用二進(jìn)制導(dǎo)致的),有時(shí)候由于二進(jìn)制和十進(jìn)制之間對應(yīng)問題會(huì)導(dǎo)致數(shù)值的精度問題,比如無法用有限個(gè)二進(jìn)制位完整地表示0.1,因?yàn)?.1轉(zhuǎn)化為二進(jìn)制之后位一個(gè)無限循環(huán)小數(shù)

print(1.1*2.2)

查看運(yùn)行結(jié)果:

2.解決方案:添加方法

需要將整數(shù)部分與小數(shù)部分單獨(dú)做處理可以解決

def multiple(m1, m2):
    r=''
    ## 若存在浮點(diǎn)型,則先轉(zhuǎn)化為整數(shù)
    if type( m1 )==float or type( m2 )==float:
        print( "存在浮點(diǎn)數(shù)" )
        len_m1=len( str( m1 ).split( "." )[1] )
        len_m2=len( str( m2 ).split( "." )[1] )
        print( "m1的小數(shù)位:", len_m1 )
        print( "m2的小數(shù)位:", len_m2 )

        m1=int( 10**len_m1*m1 )
        m2=int( 10**len_m2*m2 )
        print( "m1化為整數(shù):", m1 )
        print( "m2化為整數(shù):", m2 )
        r=str( m1*m2 )
        print( "r:", r )

        l=len_m1+len_m2
        print( "l的總長度:", l )
        if l<len( r ):
            r_front=r[:-l]
            r_last=r[-l:]
            print( r_front, "-", r_last )
            r=r_front+"."+r_last
        else:
            r="0."+(l-len( r ))*"0"+r

    else:
        print( "不存在浮點(diǎn)數(shù)" )
        r=m1*m2
    return r

res = multiple(1.1,2.2)
print(res)

查看運(yùn)行結(jié)果:

二、python四舍五入時(shí)精度問題

1.使用round與浮點(diǎn)數(shù)格式化時(shí)候的精度問題

歸根結(jié)底是計(jì)算機(jī)存儲(chǔ)浮點(diǎn)數(shù)的問題

a1 = 0.235
a2 = round(a1,2)
a3 = '%.2f' % a1
print(a2)
print(a3)

查看運(yùn)行結(jié)果:

 2.解決方案,使用Decimal函數(shù)

需要將float轉(zhuǎn)換為Decimal,該類可以通過接受字符串(務(wù)必是字符串)形式的浮點(diǎn)數(shù)實(shí)現(xiàn)相對精確的小數(shù)計(jì)算(減緩了精度誤差,但沒有消滅)

from decimal import Decimal

a1 = 0.235
a2 = Decimal(str(a1)).quantize(Decimal("0.00"))
a3 = '{:.2f}'.format(Decimal(str(a1)))
print(a2)
print(a3)

查看運(yùn)行結(jié)果:

到此這篇關(guān)于詳解Python中的數(shù)據(jù)精度問題的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)精度問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決python flask中config配置管理的問題

    解決python flask中config配置管理的問題

    今天小編就為大家分享一篇解決python flask中config配置管理的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python中Array和DataFrame相互轉(zhuǎn)換的實(shí)例講解

    python中Array和DataFrame相互轉(zhuǎn)換的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python中Array和DataFrame相互轉(zhuǎn)換的實(shí)例講解內(nèi)容,對此有需要的朋友們可以學(xué)參考下。
    2021-02-02
  • python使用yaml格式文件的方法

    python使用yaml格式文件的方法

    本文主要介紹了python使用yaml格式文件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • pytest-fixture簡介及其用法講解

    pytest-fixture簡介及其用法講解

    這篇文章主要介紹了pytest-fixture及其用法,最基本的用法就是一個(gè)fixture作為一個(gè)測試用例的參數(shù)傳入,然后就可以在該測試用例中使用該fixture,需要的朋友可以參考下
    2023-01-01
  • Python json 錯(cuò)誤xx is not JSON serializable解決辦法

    Python json 錯(cuò)誤xx is not JSON serializable解決辦法

    這篇文章主要介紹了Python json 錯(cuò)誤xx is not JSON serializable解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 使用python進(jìn)行拆分大文件的方法

    使用python進(jìn)行拆分大文件的方法

    今天小編就為大家分享一篇使用python進(jìn)行拆分大文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)

    基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)

    這篇文章主要介紹了基于Google的Python編碼規(guī)范標(biāo)準(zhǔn),其中包含了分號(hào),行長度,括號(hào),縮進(jìn),空行,空格等基本符號(hào)的使用規(guī)則,有需要的朋友可以參考下
    2021-08-08
  • DataFrame窗口函數(shù)rolling()的用法

    DataFrame窗口函數(shù)rolling()的用法

    這篇文章主要介紹了DataFrame窗口函數(shù)rolling()的用法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 編寫Python腳本來獲取mp3文件tag信息的教程

    編寫Python腳本來獲取mp3文件tag信息的教程

    這篇文章主要介紹了編寫Python腳本來獲取mp3文件tag信息的教程,代碼基于Python2.x,文中的注釋很詳細(xì),需要的朋友可以參考下
    2015-05-05
  • 一文詳解NumPy數(shù)組迭代與合并

    一文詳解NumPy數(shù)組迭代與合并

    NumPy?數(shù)組迭代是訪問和處理數(shù)組元素的重要方法,它允許您逐個(gè)或成組地遍歷數(shù)組元素,NumPy?提供了多種函數(shù)來合并數(shù)組,用于將多個(gè)數(shù)組的內(nèi)容連接成一個(gè)新數(shù)組,本文給大家詳細(xì)介紹了NumPy數(shù)組迭代與合并,需要的朋友可以參考下
    2024-05-05

最新評論