int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
これが常に値 0.0 を返すのはなぜですか? また、これを 00.00 形式にフォーマットして文字列に変換したいですか?
int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
これが常に値 0.0 を返すのはなぜですか? また、これを 00.00 形式にフォーマットして文字列に変換したいですか?
float への変換は、除算が行われた後に行われるためです。必要なもの:
float percentage = ((float) totalOptCount) / totalRespCount;
次のようなものを使用してフォーマットできるはずです。
String str = String.format("%2.02f", percentage);
int
値を使用している場合は、a を使用するdouble
方が適切な選択であり、丸め誤差が少なくなる可能性があります。 最大 1600 万までエラーなしで値をfloat
表すことができます。すべての値を正確に表すことができます。int
double
int
double percentage =(double) totalOptCount / totalRespCount;
パーセンテージは通常 100 倍されます。つまり、キャストを削除できます。
double percentage = 100.0 * totalOptCount / totalRespCount;
Java の整数除算 (long、short、byte、char、int を含む) は、常に int (または、パラメーターの 1 つが long の場合は long) を返し、ゼロに丸めます。この計算の後に変換が行われます。
(フォーマットに関する質問は、他の回答によって既に回答されています。代わりに、java.text.NumberFormat、特に java.text.DecimalFormat を参照することもできます。)
String.format("%2.02f", (float)totalOptCount/totalRespCount);
double をフォーマットしてパーセンテージとして出力するには、次を使用できます
System.out.println(new DecimalFormat("##.##").format(yourDouble) + "%"));