System.out.println(1 - 0.7); 打印结果问题,这么会是:0.30000000000000004 ?

[code="java"]System.out.println(1 - 0.3 );
System.out.println(1 - 0.7 );
System.out.println(1 - 0.8 );
System.out.println(1 - 0.9 ); [/code] 打印的结果是:
[table]
|0.7
|
|0.30000000000000004
|
|0.19999999999999996
|
|0.09999999999999998|
[/table]
谁知道原因吗?

java中默认浮点数的加减,返回的double型 这和数据类型的精度有关