內容選單標籤

2021年11月30日 星期二

why 0.1+0.1==0.2 0.1+0.2!=0.3



(0.1)=0.0001100110011001100110011001100110011001100110011001
(0.2)=0.0011001100110011001100110011001100110011001100110011
(0.3)=0.0100110011001100110011001100110011001100110011001100
IEEE 7554 Double 64 bits  Sign: 1 bit    Biased Exponent: 11 bits    Mantissa: 52 bits


(0.1)+ (0.2)=
1.1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 0000*2^-4
11.0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0000*2^-4
‘======
100.1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 0000*2^-4
因最高位進位,所以最低位捨去進1
100.1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101     *2^-4

0.0100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1101(0.1+0.2)
0.0100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100(原始0.3)
故得知0.1+0.2 != 0.3


(0.1)+ (0.1)=
1.1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 0000*2^-4
1.1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 0000*2^-4
‘======
11.0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0010 0000*2^-4
因最高位進位,所以最低位捨去進1
11.0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011    *2^-4

0.0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011(0.1+0.1)
0.0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011(原始0.2)
故得知0.1+0.1 == 0.2





小數進制轉換
https://www.exploringbinary.com/binary-converter/

沒有留言:

張貼留言