最近在学习数据类型的时候,遇到了浮点型数据精度丢失的问题,不是很理解,在这里整理一下。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
整数部分转二进制
将一个十进制浮点数转变为二进制,可以整数部分和小数部分分开来看。
整数部分和十进制整型数据转二进制的方法一样,采用“除2取余,逆序排列”法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来
例如将十进制207变为二进制
207 / 2 = 103 >> 1
103 / 2 = 51 >> 1
51 / 2 = 25 >> 1
25 / 2 = 12 >> 1
12 / 2 = 6 >> 0
6 / 2 = 3 >> 0
3 / 2 = 1 >> 1
1 / 2 = 0 >> 1
按照上述的余数采取从低位到高位的顺序排列,就得到11001111
小数部分转二进制
整数转换完就轮到小数部分。
十进制小数转换成二进制小数采用“乘2取整,顺序排列”法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分