찾다

 >  Q&A  >  본문

关于Java浮点运算精确的问题

早知道在java中,浮点运算会出现不精确的情况。解决方案是BigDecimal类。
今天发现个问题:

System.out.println(2-1.1);//0.8999999999999999
System.out.println(2.0-0.9);//1.1

只要没有整数位的都会出现问题?
Why?

巴扎黑巴扎黑2888일 전345

모든 응답(2)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-17 17:40:20

    이유는 부동 소수점 숫자가 지수와 가수의 두 부분으로 구성되어 있기 때문입니다. 부동 소수점 숫자가 이진수로 변환되어 계산에 참여한 후에는 변환 프로세스가 예측 불가능하고 되돌릴 수 없게 됩니다.
    언급하신 두 번째 경우 우연히도 변환 과정에서 정밀도 손실이 발견되지 않았습니다

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:40:20

    이 문제는 Java에만 국한된 문제가 아니며, 다른 언어에서도 이 문제가 발생할 수 있습니다.

    회신하다
    0
  • 취소회신하다