亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

Python浮點數四舍五入問題的分析與解決方法

2024-09-09 19:02:46
字體:
來源:轉載
供稿:網友

問題

昨天遇到一個問題,在 6.6045 保留三位小數時,使用 round() 函數進行計算,我們希望得到 6.605,然而:

>>> round(6.6045, 3)6.604

網上有人說,因為在計算機里面,小數是不精確的,例如 1.115 在計算機中實際上是 1.114999999999999991182,所以當你對這個小數精確到小數點后兩位的時候,實際上小數點后第三位是 4,所以四舍五入,結果為 1.11.

這種說法,對了一半。

因為并不是所有的小數在計算機中都是不精確的。例如 0.125 這個小數在計算機中就是精確的,它就是 0.125,沒有省略后面的值,沒有近似,它確確實實就是 0.125.

但是如果我們在 Python 中運行:

>>> round(0.125, 2)0.12

為什么在這里四舍了?

還有更奇怪的,另一個在計算機里面能夠精確表示的小數 0.375,我們來看看精確到小數點后兩位是多少:

>>> round(0.375, 2)0.38

為什么在這里又五入了?

解析

因為在 Python3 里面,round 對小數的精確度采用了四舍六入五成雙的方式。

如果你寫過大學物理的實驗報告,那么你應該會記得老師講過,直接使用四舍五入,最后的結果可能會偏高,所以需要使用奇進偶舍的處理方法。

例如對于一個浮點數 a.bcd,需要精確到小數點后兩位,那么就要看小數點后第三位:

如果 d 小于 5,直接舍去; 如果 d 大于 5,直接進位; 如果 d 等于 5:
d 后面沒有數據,且 c 為偶數,那么不進位,保留 c
d 后面沒有數據,且 c 為奇數,那么進位,c 變成 (c + 1) 如果 d 后面還有非 0 數字,例如實際上小數為 a.bcdef,此時一定要進位,c 變成 (c + 1)

關于奇進偶舍,有興趣的朋友可以在維基百科搜索這兩個詞條:數值修約和奇進偶舍。

所以,round 給出的結果如果跟設想的不一樣,那么需要考慮兩個原因:
你的這個小數在計算機中能不能被精確儲存?如果不能,那么它可能并沒有達到四舍五入的標準,例如 1.115,它的小數點后第三位實際上是 4,當然會被舍去。
如果你的這個小數在計算機中能被精確表示,那么,round 采用的進位機制是奇進偶舍,所以這取決于你要保留的那一位,它是奇數還是偶數,以及它的下一位后面還有沒有數據。

關于奇進偶舍,有興趣的朋友可以在搜索這兩個詞條:數值修約和奇進偶舍。

回到最開始的問題,對于 6.6045 這個浮點數,我們在 Scheme 中查看一下它的精確形式:

> (exact 6.6045)3718002967371055/562949953421312

也就是說它是不能被精確儲存的,大概表現為 6.60449999999999…的形式,因此四舍五入的時候得到了 6.604。

如何正確進行四舍五入

如果要實現數學上的四舍五入,那么就需要使用 decimal 模塊,具體用法參考官方文檔:https://docs.python.org/zh-cn...。
其中 quantize 的函數原型和文檔說明,提到了可以通過指定 rounding 參數來確定進位方式。如果沒有指定 rounding 參數,那么會默認使用上下文提供的進位方式。

現在我們來查看一下默認的上下文中的進位方式是什么:

>>> from decimal import getcontext>>> getcontext().rounding'ROUND_HALF_EVEN'

ROUND_HALF_EVEN 實際上就是奇進偶舍,如果要指定真正的四舍五入,那么我們需要在 quantize 中指定進位方式為 ROUND_HALF_UP:

>>> from decimal import Decimal, ROUND_HALF_UP>>> Decimal('0.125').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)Decimal('0.13')
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人天堂古典| 欧美成人午夜激情在线| 日韩av理论片| 亚洲福利视频免费观看| 精品视频久久久久久| 国产伦精品一区二区三区精品视频| 国产精品黄页免费高清在线观看| 欧美精品免费在线观看| 久久久久久91香蕉国产| 日本久久久久久| 国产精品成人播放| 国产精品久久国产精品99gif| 欧美肥老妇视频| 日韩欧美亚洲一二三区| 97av在线影院| 亚洲综合自拍一区| 欧美性视频在线| 亚洲精品国产suv| 91中文精品字幕在线视频| 亚洲国产天堂久久国产91| 欧美精品一区三区| 不卡在线观看电视剧完整版| 欧美老妇交乱视频| 国产视频久久久久久久| 97香蕉超级碰碰久久免费的优势| 国产精品久久色| 亚洲精品午夜精品| 成人免费自拍视频| 日韩欧美国产中文字幕| 国产va免费精品高清在线观看| 国产精品夜间视频香蕉| 亚洲色图在线观看| 欧美成在线观看| 亚洲欧美激情一区| 国产精品第一第二| 日韩**中文字幕毛片| 国产精品高潮呻吟久久av野狼| 欧美激情精品久久久久久蜜臀| 亚洲欧美日韩图片| 日韩欧美国产中文字幕| 不卡中文字幕av| 91视频九色网站| 欧美日韩国产91| 一区二区三区高清国产| 日韩成人av在线播放| 欧美在线视频一区二区| 91九色精品视频| 国内精品国产三级国产在线专| 日韩中文字幕在线免费观看| 欧美裸体男粗大视频在线观看| 欧美激情在线播放| 国产精品一区二区三区成人| 91精品视频在线看| 精品久久久久久国产91| 青草热久免费精品视频| 日韩av免费在线观看| 夜夜嗨av色一区二区不卡| 中文字幕亚洲欧美一区二区三区| 国产91在线高潮白浆在线观看| 91禁外国网站| 国产91在线高潮白浆在线观看| 91精品91久久久久久| 97精品一区二区视频在线观看| 久久久久久久成人| 2019亚洲男人天堂| 最近2019年中文视频免费在线观看| 色哟哟网站入口亚洲精品| 国产黑人绿帽在线第一区| 久久精品国产清自在天天线| 伊人伊成久久人综合网站| 91理论片午午论夜理片久久| 亚洲免费成人av电影| 亚洲裸体xxxx| 欧美性xxxx在线播放| 一区二区在线视频播放| 国内伊人久久久久久网站视频| 97香蕉久久超级碰碰高清版| 色狠狠av一区二区三区香蕉蜜桃| 性欧美亚洲xxxx乳在线观看| 亚洲精品福利在线观看| 成人a在线观看| 欧美自拍视频在线观看| 午夜精品久久久99热福利| 一本大道香蕉久在线播放29| 欧美成人第一页| 国产精品视频yy9099| 国产剧情日韩欧美| 久久精品国产清自在天天线| 奇米成人av国产一区二区三区| 亚洲欧美精品一区二区| 2018日韩中文字幕| 26uuu日韩精品一区二区| 亚洲国产精彩中文乱码av在线播放| 久久久在线观看| 久久久久久成人精品| 欧洲成人午夜免费大片| 91高潮精品免费porn| 夜色77av精品影院| 7m精品福利视频导航| 91国内精品久久| 黑人巨大精品欧美一区二区免费| 久久亚洲电影天堂| 欧美激情精品久久久久久久变态| 992tv在线成人免费观看| 欧美日韩一区二区在线| 亚洲人成在线观看网站高清| 国产精品嫩草视频| 成人久久久久爱| 日韩成人性视频| 欧美精品久久久久a| 国产精品99久久久久久久久久久久| 色综合视频网站| 国产激情久久久| 国产精品爽爽爽| 精品视频在线播放| 亚洲白虎美女被爆操| 成人在线观看视频网站| 国产精品亚洲第一区| 在线成人激情黄色| 日韩一区二区福利| 91麻豆桃色免费看| 日韩欧美在线视频观看| 国产视频久久久久久久| 一本一本久久a久久精品综合小说| 一本一本久久a久久精品综合小说| 国产精品99久久久久久久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 欧美日韩在线免费观看| 欧美成人午夜视频| 午夜免费久久久久| 亚洲欧美日韩在线高清直播| 国产成人精品午夜| 久久精品国产一区二区电影| 亚洲成年人在线| 黄色一区二区三区| 欧美日韩久久久久| 97人人爽人人喊人人模波多| 亚洲午夜未满十八勿入免费观看全集| 国产成人综合精品| 国产成人97精品免费看片| 91精品视频在线播放| 日韩av在线网页| 在线日韩欧美视频| 在线视频中文亚洲| 国产精品av电影| 日本亚洲欧美成人| 尤物yw午夜国产精品视频| 亚洲免费av网址| 欧美性极品xxxx娇小| 日韩欧美高清在线视频| 午夜精品蜜臀一区二区三区免费| 久久久视频精品| 亚洲美女喷白浆| 国产精品久久二区| 欧美日韩免费看| 成人黄色短视频在线观看| 欧美三级免费观看| 久久av.com| 国产精品久久网| 国产精品视频成人| 欧美激情亚洲综合一区| 海角国产乱辈乱精品视频| 亚洲91精品在线观看| 国产精品第七十二页|