public class Test {
public static void main(String[] args) {
System.out.println(2.0-1.1);
}
}
//output:0.8999999999999999
2.0=10.0000000000000000截断
1.1=01.0001100110011001截断 SP:并不是所有的小数都能用2进制准确表示,这个笔算时就是一直循环了。因为是double在这截断。
2数二进制相减,0.1110011001100111转为10进制只能接近0.8999999999999999了。
如果是(2.0f-1.1f)就能算出0.9
指明了2数为float型,但java先都转为doule型运算,然后四舍五入为0.9f.