为什么0.1+0.2不等于0.3
0.1+0.2 = 0.30000000000000004 ??
程序里面0.1+0.2=0.30000000000000004,如图(java实例)
这个问题涉及二进制的转换、浮点数的转换
如果你英语底子比较好,请移步:https://0.30000000000000004.com/
1、解析原理(简要)
由于0.1、0.2在转为二进制后,变成了一个无限循环数,double类型将其长度截断后相加,得到的结果再进行舍入操作,便成了0.30000000000000004这样一个看似莫名其妙的数。
例如 0.1的二进制为:0.0001100110011…,后面0011无限循环
2、解析原理(详细)
要想弄懂这个问题,首先要弄清楚以下几点:
1、0.1在程序中是以double形式存储的。
2、10进制小数与2进制小数的转换。
3、IEEE 754 标准中double的存储结构。
4、double类型数字相加方式。
2.1、10进制小数与2进制小数的转换
首先我们知道10进制里面0.