2014-12-07 2 views
-1

하루 동안 경과 한 시간의 백분율을 찾으려고 시도합니다. 내가 뭘 잘못하고 있는지 모르겠지만 코드를 컴파일하고 실행하면 0.0이 나오고 내가 잘못했는지 확실하지 않습니다.하루의 0.0 %가 경과했습니다 (Java)

class Time { 
public static void main(String[] args) { 
    // variable assignments apply to the time when I started 
    // writing program 
    int hour, minute, second; 
    hour = 11; 
    minute = 8; 
    second = 14; 

    int hoursToMinutes = hour * 60; 
    int minutesToSeconds = (hoursToMinutes + minute) * 60; 
    int secondsElapsed = minutesToSeconds; 
    System.out.println(secondsElapsed + " seconds have elapsed."); 

    int secondsPerDay = 24 * 60 * 60; 
    double percentageOfDayElapsed = secondsElapsed/secondsPerDay; 
    System.out.println(secondsPerDay); 
    System.out.println(percentageOfDayElapsed + "% of the day has elapsed."); 
    } 
} 
+2

INT 분할. –

+0

코드를 모두 보지 않았지만 int로 나뉘어져있는 것을 볼 수 있습니다. percentageOfDayElapsed = (double) secondsElapsed/(double) secondsPerDay; – TungstenX

답변

2

secondsElapsed/secondsPerDay정수 나누기을 수행하는 더 소수 지금까지 반환되지 않습니다 것을 의미한다. 이이 비율로되어 있기 때문에, 또한

double percentageOfDayElapsed = (double) secondsElapsed/secondsPerDay; 

을 나는 그것이 백을 곱한하는 기대 : 당신이 소수로 나누기를 사용하려는 경우, 당신은 double에 피연산자 중 하나를 캐스트 할 수 있습니다 :

double percentageOfDayElapsed = ((double) secondsElapsed/secondsPerDay) * 100; 

또 다른 것 : second 변수는 사용되지 않았습니다. 아마도 그것은 secondsElapsed 추가해야합니다

int secondsElapsed = minutesToSeconds + second; 
0
int secondsElapsed = minutesToSeconds; 
int secondsPerDay = 24 * 60 * 60; 

당신은 두 가지의 int 다이빙입니다!

double secondsElapsed = minutesToSeconds; 
double secondsPerDay = 24 * 60 * 60; 

을 다음 부문을 수행합니다 : 더블로 변경

double percentageOfDayElapsed = secondsElapsed/secondsPerDay; 
0

문제는 당신이 정수로 정수를 나누는 것을입니다. 숫자가 1보다 작습니다. 정수이기 때문에 0으로 절단됩니다. 그 후에야 이중으로 변환됩니다. 그래서 나누기를하기 전에 그것을 double로 변환하고 싶습니다.

변화 분할 선 대신 부동 소수점의

double percentageOfDayElapsed = ((double)secondsElapsed/(double)secondsPerDay)*100; 
관련 문제