2013-08-08 3 views
22

Windows에서 사용 된 디스크 공간의 %를 계산하려고하는데 totaldrive는 Long에있는 c 드라이브의 총 디스크 공간과 Long에있는 freedrive dentoes 여유 공간을 나타냅니다. 인쇄 문 제가long by long returns 나누기 0

+6

Heh. 내가 강을 따라 부는 즐거운 하루였습니다 ... – cabbagery

+1

왜 'long'대신에 'Long'을 사용하고 있습니까? 또한,'percentageUsed'에 대한 Java 명명 규칙을보십시오. – wchargin

답변

42

아마도 long을 long으로 나누면 (long/long = long) 연산을 참조하여 결과가 길어집니다 (0 경우).

부서의 피연산자 중 하나를 부동 유형으로 캐스팅하여 동일한 결과를 얻을 수 있습니다.

Long Percentageused = (long)((float)totaloccupied/totaldrive*100); 
1

왼쪽에서 오른쪽으로 평가됩니다 즉, 첫 번째 원하는 값을 받고 있지 않다하면서 경기를 누군가가 도와 드릴까요 반환

Long Percentageused =(totaloccupied/totaldrive*100); 
System.out.println(Percentageused); 

사용의 % 계산 여기

long totaloccupied = totaldrive - freedrive; 

정수 나누기는 0을 반환합니다 (예 : 8/10은 0으로 계산 됨). 값을 실수로 변환하거나 100 * a/b를 수행하십시오. 수레가 더 정확한 결과를 줄 것입니다.

+0

'float'은 관련된 숫자가 큰 경우 더 정확한 결과를 제공하지 않습니다. – paddy

+0

(float) (100 * a)/(float)을 수행하면됩니다. b. 양측은 상대적으로 작은 규모로 차이가 날 것인데, 이는 대부분의 정밀도 손실이 발생하는 곳입니다. –

+1

BTW, 누구든지 여기에서 모든 답을 썼다면 건설적인 의견을 남겨주세요. –

4

정수 나누기를 수행 중입니다! totaloccupiedtotaldrive보다 작기 때문에 둘 다 나누어 대답은 0입니다. 먼저 두 배로 변환해야 다음 100에 소수점을 추가하는 것은 그것이 double로 처리됩니다 보장

double percentageUsed = 100.0 * totalOccupied/totalDrive; 

참고.

+0

totalOccupied 및 totalDrive가 모두 길면 100.0을 곱하여도 0.0이됩니다. –