context
在计算机中,通常不能直接来表示小数,而是要将小数分为多个部分(二进制形式)来存储。表示实数的方法有2种:
a. 定点数表示法
b. 浮点数表示法
2种方法的区别在于小数点是否固定。在Java中,float(单精度)和double(双精度)类型的小数都是用浮点数表示法来存储在计算机中,即遵循IEEE-754标准。
通常我们都是通过字面量来赋值:
double a = 0.4;
double b = 0.3;
上面说过了,浮点数最后以二进制形式存储在计算机中,然而有些字面量(十进制数)无法精确转换为二进制形式(毕竟寄存器bit位有限):
double a = 0.4; // 无法精确转换
double b = 0.3; // 无法精确转换
double c = 0.5; // 精确转换
double d = 0.25; // 精确转换
这样一来,在定义浮点数的时候就有可能出现精度丢失,故影响到运算过程的结果:
double a = 0.4;
double b = 0.3;