1. 程式人生 > 其它 >浮點數向偶數舍入問題

浮點數向偶數舍入問題

例如有效數字超出規定數位的多餘數字是1001,它大於超出規定最低位的一半(即0.5),故最低位進1。如果多餘數字是0111,它小於最低位的一半,則舍掉多餘數字(截斷尾數、截尾)即可。對於多餘數字是1000、正好是最低位一半的特殊情況,最低位為0則舍掉多餘位,最低位為1則進位1、使得最低位仍為0(偶數)。

注意這裡說明的數位都是指二進位制數。

舉例:要求保留小數點後3位。

對於1.0011001,舍入處理後為1.010(去掉多餘的4位,加0.001)
對於1.0010111,舍入處理後為1.001(去掉多餘的4位)
對於1.0011000,舍入處理後為1.010(去掉多餘的4位,加0.001,使得最低位為0)

對於1.1001001,舍入處理後為1.101(去掉多餘的4位,加0.001)
對於1.1000111,舍入處理後為1.100(去掉多餘的4位)
對於1.1001000,舍入處理後為1.100(去掉多餘的4位,不加,因為最低位已經為0)

對於1.01011,舍入處理後為1.011(去掉多餘的2位,加0.001)
對於1.01001,舍入處理後為1.010(去掉多餘的2位)
對於1.01010,舍入處理後為1.010(去掉多餘的2位,不加)

對於1.01111,舍入處理後為1.100(去掉多餘的2位,加0.001)
對於1.01101,舍入處理後為1.011(去掉多餘的2位)
對於1.01110,舍入處理後為1.100(去掉多餘的2位,加0.001)

來源:https://blog.csdn.net/qq_34369618/article/details/52247350