亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python中eval的問題

瀏覽:79日期:2022-06-27 18:40:29

問題描述

python中eval的問題

如圖,Python2.7在使用eval計算浮點數表達式的時候,

eval(’0.3-0.1==0.2’) # 輸出為Falseeval(’%d - %d == %d’%(0.3, 0.1, 0.2)) # 輸出為Trueeval(’%s - %s == %s’%(0.3, 0.1, 0.2)) # 輸出為Falseeval(’%s - %s == %s’%(’0.3’, ’0.1’, ’0.2’)) # 輸出為False

這就讓人特別疑惑了,在網上沒找到答案,請高手指導!

更新:

還有個問題請教下,a=0.3-0.1,print(a)輸出0.19999999999999998;b=0.2,但是print(’%s==%s’%(a,b))卻輸出的是 0.2==0.2,這里為什么在格式化字符串的時候,a由0.19999999999999998變成了0.2呢?

問題解答

回答1:

一般在計算機里不能直接用 == 比較2個浮點數是否相等。

因為浮點數值在計算機存在誤差。

python有 decimal 和 fraction 2個模塊用來進行高精度浮點計算。

例子

>>> from fractions import Fraction>>> Fraction(’0.3’)-Fraction(’0.1’) == Fraction(’0.2’)True>>> from decimal import Decimal>>> Decimal(’0.3’)-Decimal(’0.1’) == Decimal(’0.2’)True>>> 回答2:

這和eval沒什么關系,主要是精度問題,這個在所有的編程語言都會遇到,你試試 0.3-0.1 == 0.2 都會直接返回False. 百度 JavaScript 0.2-0.1問題,然后看一下《計算機組成原理》最開始的 數據表示。

https://stackoverflow.com/que... 這個是 一個高票回答。

回答3:

eval(’0.3-0.1==0.2’) # 輸出為False, 是因為0.3-0.1=0.19999999999999998eval(’%d - %d == %d’%(0.3, 0.1, 0.2)) # 輸出為True, 是因為你%d傳入是整數,相當于0-0=0eval(’%s - %s == %s’%(0.3, 0.1, 0.2)) # 輸出為False, 參考1eval(’%s - %s == %s’%(’0.3’, ’0.1’, ’0.2’)) # 輸出為False, 參考1

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚欧精品一区二区三区四区 | 美国一级做a爰片性色毛片 美国人与性xxxxxxx | 狠狠色丁香婷综合久久 | 看全色黄大色黄大片色责看的 | 中国三级毛片 | 九九免费高清在线观看视频 | 成年人黄色片网站 | 欧美性xxxxx极品老少 | 欧美日韩亚洲视频 | 国产啪精品视频网免费 | 超级碰碰碰免费视频播放 | 成人性欧美丨区二区三区 | 黄 色 成 年人网站 黄+在线播放 | 26uuu老色哥 26uuu欧美视频在线观看 | 免费黄色网址在线播放 | 日韩欧美一二区 | 69国产成人精品午夜福中文 | 亚洲欧美国产一区二区三区 | 国产欧美国产精品第二区 | 日韩中文字幕在线亚洲一区 | 国产日本三级在线播放线观看 | 大片毛片 | h版成版在线播放 | 久久视频免费在线观看 | 国产在线麻豆精品 | 看黄色网址 | 2021国产麻豆剧传媒精品网站 | 800玖玖爱在线观看香蕉 | 欧美日韩在线视频不卡一区二区三区 | juliaann与黑人丝袜交 | 亚洲色图日本 | 欧美一区二区视频三区 | 亚洲欧美久久精品 | 中文一区| 国产成人午夜福在线观看 | 精品视频一区二区三区在线观看 | 狠狠做久久深爱婷婷97动漫 | 免费在线观看高清影片 | 99久免费精品视频在线观看2 | 国产精品久久久久久久久久久久久久 | 你懂的在线网站 |