首頁 >後端開發 >Python教學 >python中小數點後的位數問題如何解決

python中小數點後的位數問題如何解決

王林
王林轉載
2023-05-15 17:10:081842瀏覽

    python中小數點後的位元數

    第一種方法

    a = 8.8888

    使用round 函數

    b = round(a,2) # 保留小数点后两位小数,会四舍五入
    b 就等于8.89

    第二種方法

    b= "%.2f"%a # 也会四舍五入

    第三種方法

    ret1 = Decimal("88.001").quantize(Decimal("0.00"))
    print(ret1)
    
    # 满5进1的写法
    from decimal import Decimal, ROUND_HALF_UP
    res = Decimal(str(11.565)).quantize(Decimal("0.00"),ROUND_HALF_UP)

    python小數點位數控制

    利用python內建的round()函數

    round()如果只有一個數作為參數,不指定位數的時候,回傳的是一個整數,而且是最靠近的整數

    #一般情況是使用四捨五入的規則,但是碰到舍入的後一位為5的情況,如果要取捨的位數前的數是偶數,則直接捨棄,如果奇數這向上取捨

    正常的取捨:

    python中小數點後的位數問題如何解決

    ##。入的後一位為5的情況:

    python中小數點後的位數問題如何解決

    利用格式化方法

    特殊情況需要注意的和round 方法一樣

    python中小數點後的位數問題如何解決

    python中小數點後的位數問題如何解決

    #利用math模組裡ceil和floor方法

    • math模組的ceil(x):取大於或等於x的最小整數

    • math模組的floor(x):取小於或等於x的最大整數

    python中小數點後的位數問題如何解決

    超過17位的精度分析

    python預設的是17位元精度,也就是小數點後16位,但是這裡有一個問題,就是當我們的計算需要使用更高的精度(超過16位小數)的時候該怎麼做呢?

    高精度使用decimal模組,配合getcontext

    decimal 模組預設精度是17位,可以透過修改getcontext().prec 修改精度的值

    python中小數點後的位數問題如何解決

    python中小數點後的位數問題如何解決#

    以上是python中小數點後的位數問題如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除