早知道在java中,浮点运算会出现不精确的情况。解决方案是BigDecimal类。
今天发现个问题:
System.out.println(2-1.1);//0.8999999999999999
System.out.println(2.0-0.9);//1.1
只要没有整数位的都会出现问题?
Why?
ringa_lee2017-04-17 17:40:20
이유는 부동 소수점 숫자가 지수와 가수의 두 부분으로 구성되어 있기 때문입니다. 부동 소수점 숫자가 이진수로 변환되어 계산에 참여한 후에는 변환 프로세스가 예측 불가능하고 되돌릴 수 없게 됩니다.
언급하신 두 번째 경우 우연히도 변환 과정에서 정밀도 손실이 발견되지 않았습니다