日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案

瀏覽:35日期:2022-07-10 13:29:14

一、問題說明

以前對(duì)浮點(diǎn)數(shù)運(yùn)行沒有沒有太在意。昨天同事要求把百分比結(jié)果保存到文件上,然后就以保存1位小數(shù)的形式給他保存了。

但是今天同事運(yùn)行時(shí)問能不能統(tǒng)一以一位小數(shù)的形式保存,當(dāng)時(shí)覺得很奇怪昨天就是以一位小數(shù)形式存的怎么還會(huì)提這種要求呢。

其給回的截圖確實(shí)是部分是一位小數(shù)的,但一部分是很長(zhǎng)的。查看代碼都統(tǒng)一如下格式:

# 使用round保留三位小數(shù),然后乘以100,最后格式化為帶百分號(hào)的字符串rate=f'{round(x/y,3) * 100}%'

代碼上沒看出什么問題,直接運(yùn)行確實(shí)是有些結(jié)果是一長(zhǎng)串的。進(jìn)行調(diào)試發(fā)現(xiàn)當(dāng)x為37y為76時(shí)即會(huì)出現(xiàn)問題,如下圖所示:

Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案

進(jìn)行步驟拆分,發(fā)現(xiàn)round方法沒有問題,問題在浮點(diǎn)數(shù)乘以100上(同時(shí)如下圖可以看到也不是所有浮點(diǎn)數(shù)乘都有問題)

Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案

二、原因探究

搞不清原因,直到看到這篇文章:https://www.programiz.com/python-programming/numbers

大意是說二進(jìn)制對(duì)很多浮點(diǎn)數(shù)無法準(zhǔn)確表示只能用一個(gè)近似值代替,而當(dāng)使用這些以近似值代替的浮點(diǎn)數(shù)進(jìn)行進(jìn)算時(shí)本質(zhì)上是這些進(jìn)似值參與了運(yùn)算,出來的結(jié)果也就是進(jìn)似值運(yùn)算后的結(jié)果。

也就是說,一是這不是乘100的問題也不是乘法的問題而是整個(gè)浮點(diǎn)數(shù)運(yùn)算都有問題,二是這不是python的問題是計(jì)算機(jī)浮點(diǎn)數(shù)存儲(chǔ)的問題像C、Java等其他計(jì)算機(jī)語言進(jìn)行運(yùn)算都會(huì)有問題。

Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案

可能有人會(huì)疑惑:為什么二進(jìn)制可以表示2不能表示0.2呢?

這是因?yàn)閿?shù)值和字符串是不一樣的,如果是字符串那么表示2.2點(diǎn)的左右兩邊的2編碼是一樣的就可以了(如ASCII碼:504650),但數(shù)值不是這樣,數(shù)值的整數(shù)部分和小數(shù)部分需要一個(gè)統(tǒng)一的表示形式,那就是加權(quán)位計(jì)數(shù)法。

整數(shù)部分都要以2的0次方(20)到2的無窮次方(2∞)表示,這沒有問題,只要長(zhǎng)度足夠就能表示出所有奇數(shù)和偶數(shù)。2 = 1 * 21 + 0 * 20 = 10

小數(shù)部分都要以2的-1次方(2-1)到2的負(fù)無窮次方(2-∞)表示,這就有問題,因?yàn)楸热?-1...2-∞不管怎么組合都不能完全等于0.2。0.2 = 0 * 2-1 + 0 * 2-2 + 1 * 2-3 ...

三、處理辦法

這情況讓我想起上份工作局方領(lǐng)導(dǎo)的一句話,應(yīng)該是“可以理解但不能接受”。

原理上二進(jìn)制無法精確表示一些浮點(diǎn)數(shù)可以理解,但是就這么返回個(gè)顯然錯(cuò)誤的結(jié)果給用戶那是無法接受的。

python提供了Decimal()方法讓浮點(diǎn)運(yùn)算結(jié)果可以和人平時(shí)運(yùn)算的結(jié)果一樣。(Decimal本質(zhì)應(yīng)該還是通過加長(zhǎng)長(zhǎng)度提高精度)

Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案

# Decimal傳字符串才能準(zhǔn)確表示,所以需要先用str()把round()的結(jié)果轉(zhuǎn)為字符串rate=f'{Decimal(str(round(x/y,3))) * 100}%'# 其實(shí)上邊的結(jié)果出來是48.700%的形式,即三位小數(shù)的形式并不太符合我們保留一位小數(shù)的想法,真正符合想法得下面這樣# rate=f'{round(Decimal(str(round(x/y,3))) * 100, 1)}%'# 其實(shí)我們說了這么多,我們都是建立在決定保留多少位再乘100這個(gè)前提下,倘若我們先乘100后決定保留幾位那都不需要用Decimal# rate=f'{round(x/y*100,1)}%'

Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案

參考:

https://www.programiz.com/python-programming/numbers

https://docs.python.org/3.7/library/decimal.html

以上就是Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Python浮點(diǎn)型(float)運(yùn)算結(jié)果不正確的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品国产亚洲aⅴ| 日韩国产成人精品| 国产精品嫩模av在线| 日韩一区二区三区精品 | 日韩欧美一区二区三区在线视频 | 亚洲国产专区| av在线资源| 欧美午夜精彩| 美女黄网久久| 国产日韩亚洲欧美精品| 国产欧美日韩影院| 久久97久久97精品免视看秋霞| 精品国产亚洲一区二区三区大结局| 精品亚洲成人| 欧美久久精品一级c片| 亚洲免费专区| 色爱综合网欧美| 国产精品婷婷| 久久xxx视频| 欧美精品一卡| 久久wwww| 红桃视频国产一区| 五月激激激综合网色播| 国产一区三区在线播放| 天堂网在线观看国产精品| 啪啪亚洲精品| 99久久久久国产精品| 国产美女精品视频免费播放软件| 婷婷综合六月| 日韩av电影一区| 亚洲精品网址| 精品国产不卡一区二区| 中文字幕日韩欧美精品高清在线| 超级白嫩亚洲国产第一| 日本电影久久久| 久久亚洲国产| 日韩中文一区二区| 国产福利片在线观看| 综合色就爱涩涩涩综合婷婷| 日本精品影院| 久久精品国产久精国产| 日韩欧美中文字幕在线视频| 激情综合网五月| 国产成人精选| 国产情侣久久| 亚洲中午字幕| 欧美日韩国产高清电影| 亚洲欧洲美洲av| 麻豆成人91精品二区三区| 在线国产日韩| 模特精品在线| 99久精品视频在线观看视频| 国产精品日韩精品中文字幕| 尤物在线精品| 国产中文一区| 亚洲www啪成人一区二区| 亚洲国产欧美日本视频| 成人国产精品久久| 国产福利91精品一区二区| 久久99久久久精品欧美| 国产精品任我爽爆在线播放| 97精品久久| 国产精品qvod| 中文字幕色婷婷在线视频| 鲁鲁在线中文| 久久视频国产| 亚洲色图综合| 亚洲综合五月| 日本视频中文字幕一区二区三区| 欧美一区二区三区久久| 国产精品美女在线观看直播| 久久狠狠久久| 精品美女在线视频| 蜜臀国产一区| 午夜久久福利| 视频一区中文字幕精品| 国产精品玖玖玖在线资源| 成人日韩av| 午夜国产一区二区| 日韩在线观看中文字幕| 国产丝袜一区| 欧美aa在线观看| 91tv亚洲精品香蕉国产一区| 亚洲免费一区二区| 国产精品视频一区视频二区| 精品三级久久| 91麻豆精品激情在线观看最新 | 天堂√中文最新版在线| 老鸭窝毛片一区二区三区| 欧美亚洲人成在线| 99久久激情| 国产伦精品一区二区三区在线播放| 国产精品毛片久久| 婷婷丁香综合| 久久99国产精品视频| 欧美+亚洲+精品+三区| 国产精品一区二区精品视频观看 | 日韩高清电影免费| 亚洲福利久久| 欧美久久精品| 在线视频日韩| 日韩综合一区| 国产精品亚洲欧美日韩一区在线 | 国产一区二区三区四区| 三级亚洲高清视频| 精品国产一级| 国产精品日本| 欧美黄色网页| 九色porny丨国产首页在线| 国产日韩亚洲| 夜久久久久久| 日本韩国欧美超级黄在线观看| 欧美一区91| 在线精品亚洲| 久久亚洲国产精品一区二区| 欧美亚洲日本精品| 麻豆精品在线视频| 69堂精品视频在线播放| 亚久久调教视频| 亚洲精品麻豆| 亚洲精品免费观看| 五月国产精品| 国产亚洲一区| 国产精品久久乐| 国产日本亚洲| 亚洲精选成人| 亚洲免费福利一区| 日韩不卡在线观看日韩不卡视频| 自拍自偷一区二区三区| 日韩激情网站| 日韩欧美高清一区二区三区| 免费黄网站欧美| 日本中文字幕视频一区| 91成人精品观看| 欧美国产先锋| 伊人久久视频| 午夜精品影院| 日韩1区2区日韩1区2区| 国产精品红桃| 精品入口麻豆88视频| 精品亚洲免a| 亚洲福利一区| 亚洲一区二区三区中文字幕在线观看| 亚洲三级精品| 欧美日韩黄网站| 91亚洲国产成人久久精品| 91精品电影| 欧美久久久网站| 999精品一区| 亚洲欧美专区| 精品一区二区三区四区五区| 亚洲欧洲另类| 老鸭窝一区二区久久精品| 激情六月综合| 日韩福利视频网| 国产一区二区三区黄网站| 91精品国产乱码久久久久久久 | 欧美亚洲激情| 欧美久久香蕉| 亚洲欧美伊人| 国产经典一区| 亚洲一区日韩| 成人日韩av| 日韩1区2区3区| 欧美日韩在线观看视频小说| 久久亚洲风情| 日韩在线看片| 欧美日韩a区| 六月婷婷一区| 你懂的亚洲视频| 综合五月婷婷| 狠狠爱成人网| 日本欧美不卡| 韩日一区二区| 国产欧美在线| 日韩一区二区三区免费视频 | 欧美色综合网| 日本电影久久久| 蜜臀久久久99精品久久久久久| 国内在线观看一区二区三区 | 精品久久91| 欧美欧美黄在线二区| 日韩精品a在线观看91| 午夜在线精品偷拍| 欧美在线影院| 亚洲少妇一区| 国产成人精品免费视| 国产激情精品一区二区三区| 色综合视频一区二区三区日韩| 99国产精品久久久久久久成人热| 国产日韩亚洲| 国产日韩一区二区三免费高清| 日产欧产美韩系列久久99| 五月天久久网站| 久久久久国产精品一区三寸 | 六月婷婷综合| 日韩精品1区| 久久国产亚洲| 欧美日韩精品免费观看视频完整| 国户精品久久久久久久久久久不卡 |