Java中的小數(float、double)是不精確的。
0.1 用二進位制表示為:0.000110011...
求0.1的二進位制小數點後1位:0.1x2=0.2 0小數點後2位:0.2x2=0.4 0小數點後3位:0.4x2=0.8 0小數點後4位:0.8x2=1.6 1小數點後5位:0.6x2=1.2 1小數點後6位:0.2x2=0.4 0小數點後7位:0.4x2=0.8 0小數點後8位:0.8x2=1.6 1小數點後9位:0.6x2=1.2 1小數點後10位: 0.2x2=0.4 0
把上邊的求解結果拼湊就得到0.1的二進位制結果:0.000110011...
0.1的二進位制
由此可見,0.1用二進位制表示是一個無限迴圈的數,計算機只存了前幾位,所以Java小數不是精確的。
最新評論