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

詳細(xì)聊聊為什么Python中0.2+0.1不等于0.3

 更新時間:2022年12月06日 10:41:42   作者:陽光下的小恐龍  
最近在學(xué)習(xí)過程中發(fā)現(xiàn)在計算機(jī)JS時發(fā)現(xiàn)了一個非常有意思事,0.1+0.2的結(jié)果不是0.3,而是0.30000000000000004,下面這篇文章主要給大家介紹了關(guān)于為什么Python中0.2+0.1不等于0.3的相關(guān)資料,需要的朋友可以參考下

為什么Python中0.2+0.1不等于0.3

大家請看下面的python程序代碼:

print(0.2+0.1)

猜一猜運(yùn)行結(jié)果是什么,是0.3嗎?

NoNoNo!

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

0.30000000000000004

為什么是0.30000000000000004呢?

浮點數(shù)運(yùn)算

這是因為在計算機(jī)中,浮點數(shù)運(yùn)算也是要先轉(zhuǎn)化為二進(jìn)制的

1.浮點數(shù)如何轉(zhuǎn)化為二進(jìn)制:

⑴整數(shù)部分:除以2,取出余數(shù),商繼續(xù)除以2,直到得到0為止,將取出的余數(shù)逆序

⑵小數(shù)部分:乘以2,然后取出整數(shù)部分,將剩下的小數(shù)部分繼續(xù)乘以2,然后再取整數(shù)部分,一直取到小數(shù)部分為零為止。

如果永遠(yuǎn)不為零,則按要求保留足夠位數(shù)的小數(shù),最后一位做0舍1入。將取出的整數(shù)順序排列。

2. 0.2轉(zhuǎn)化為二進(jìn)制:(只看小數(shù)點后)

0.2 × 2 = 0.4 取 0
0.4 × 2 = 0.8 取 0
0.8 × 2 = 1.6 取 1
0.6 × 2 = 1.2 取 1
0.2 × 2 = 0.4 取 0
0.4 × 2 = 0.8 取 0
0.8 × 2 = 1.6 取 1

所以0.2轉(zhuǎn)化為浮點數(shù)為0.001100110011…(0011無限循環(huán))0.1轉(zhuǎn)化為二進(jìn)制:

同理0.1轉(zhuǎn)化為浮點數(shù)為0.0001100110011…(0011無限循環(huán))

0.2+0.1

因為在計算機(jī)中,0.2和0.1都不是確定的數(shù),而是近似值,因此它們經(jīng)過浮點數(shù)運(yùn)算(對階、尾數(shù)運(yùn)算、規(guī)格化處理、舍入處理、溢出處理)后得到的值也是近似值,經(jīng)過了計算機(jī)的四舍五入。所以結(jié)果是0.30000000000000004

附:實現(xiàn)0.1+0.2==0.3

在python中有一個模塊decimal可以解決0.1+0.2!=0.3的問題。

decimal模塊提供了一個Decimal數(shù)據(jù)類型用于浮點數(shù)的計算,相比于內(nèi)置的二進(jìn)制浮點數(shù)計算更加精確。

簡單的使用方法:給decimal傳遞Decimal整型或者字符串類型,但不能是浮點數(shù)據(jù)(浮點數(shù)據(jù)本身不準(zhǔn)確)

總結(jié)

到此這篇關(guān)于為什么Python中0.2+0.1不等于0.3的文章就介紹到這了,更多相關(guān)Python 0.2+0.1不等于0.3內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論