2016-10-08 5 views
0

누군가 여기서 일어나는 일을 도와 줄 수 있습니까? 자바 컴파일러가 아래 예제에서 869를 반환하는 이유는 무엇입니까?왜 출력이 나옵니까? Java

package week1; 

public class PercentagePrinter { 
    public static void main(String[] args){ 

     double probability = 8.70; 
     int percentage = (int)(100 * probability); 
     System.out.println(percentage); 
    } 

} 
+0

여기서 일어나는 일은 부동 소수점 숫자를 사용하고 있다는 것입니다. 부동 소수점 숫자가 잘못되었습니다. 부동 소수점 숫자는 사용하지 마십시오. – Gendarme

+0

@Gendarme 그건 말도 안돼. 그들은 다루기가 약간 까다 롭습니다. 특정 상황에서 그들은 (예를 들어 돈을 다루는 경우) 나쁘지만 일반적으로는 그렇지 않습니다. – glglgl

답변

0

당신은 곱셈 후 int로 값을 변환하는 그래서 때 ... 당신은 8.7의 값이 8.6999 같은로 표현을 개최 할 때처럼, 정밀도를 잃고 두 번 사용하여, 당신은 단지 8.69를 얻을. 중단 점을 사용하고 프로그램 실행으로 실제 값 probability을 볼 수 있습니다.

관련 문제