2013-08-08 16 views
22

Windowsで使用されているディスク容量の%を計算しようとしています.totaldriveは、Longのfreedrive dentoes空き領域のcドライブの合計ディスクスペースを示します。 print文は、私がlong by longを返す0

+6

Heh。長い一日だったので、私は川の下でフロートを楽しんだ。 – cabbagery

+1

なぜ「ロング」ではなく「ロング」を使っているの?また、 'percentageUsed'のJava命名規則を見てください。 – wchargin

答えて

42

あなたはおそらくlongをlong(long/long = long)演算を参照するlongで割って、長い結果(ケース0)を与えます。

浮動小数点型のどちらかのオペランドをキャストすることで同じことができます。

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

左から右に評価されることを、最初に目的の値を取得していない午前0。誰かが助けることができ返し

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

使用量の%の計算ここで

long totaloccupied = totaldrive - freedrive; 

整数除算は0を返します(たとえば、8/10は0と評価されます)。値を浮動小数点に変換するか、100 * a/bを実行します。フロートはより正確な結果を提供します。

+0

'float'は関係する数値が大きい場合にはより正確な結果を返しません。 – paddy

+0

あなたがしている場合(フロート)(100 * a)/(フロート)b。 2つの側面は、相対的に小さな桁で異なります。これは、最も正確な損失が発生する場所です。 –

+1

ところで、ここですべての答えを投票してくれた人は誰でも建設的なコメントを残してください。 –

4

あなたは整数除算を行っています! totaloccupiedtotaldriveより小さいので、両方の除算は答えは0です。あなたは最初の二重に変換する必要があります。100に小数点を追加すると、それがdoubleとして扱われることを保証

double percentageUsed = 100.0 * totalOccupied/totalDrive; 

注意を。

+0

totalOccupiedとtotalDriveの両方がlongの場合、100.0を掛けても0.0になります。 –

関連する問題