浮点类型在使用的过程中,常见的问题有以下几点:
1) 浮点数的直接量为double类型。
2) 浮点数存在舍入误差问题。
下面分别做详细介绍:
(1):浮点数的直接量为double类型
浮点数,就是小数,包括: float和double。默认的浮点直接量为double型,如果需要表示float类型的直接量,需要加“f”或“F”后缀。请看如下代码:
float f1 = 3.14 ;
以上代码,会出现编译错误。3.14是double类型的直接量,如果表示float类型的直接量应该写成3.14f。
(2):浮点数存在舍入误差问题
由于浮点数内部用二进制的方式来表示十进制,会存在舍入误差。二进制系统中无法精确的表示1/10,就好像十进制系统中无法精确的表示1/3一样。对于一些要求精确运算的场合会导致代码的缺陷。请看如下代码:
double money = 3.0;
double price = 2.9;
System.out.println(money - price);
上述代码的输出结果为:
0.10000000000000009
查看上述结果,并没有如我们想象的为0.1。如果需要精确的运算可以考虑放弃使用double或float而采用BigDecimal 类来实现。关于这一点,将在后续的章节中介绍。
|
|