int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
为什么总是返回值0.0?我也想格式化为00.00格式并转换为字符串?为什么Java中的两个整数除法返回0.0?
int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
为什么总是返回值0.0?我也想格式化为00.00格式并转换为字符串?为什么Java中的两个整数除法返回0.0?
因为转换为浮动发生在分割完成后。您需要:
float percentage = ((float) totalOptCount)/totalRespCount;
您应该能够使用类似的格式:
String str = String.format("%2.02f", percentage);
String.format("%2.02f", (float)totalOptCount/totalRespCount);
是它存储,在哪个变量 – kiran 2011-02-08 10:34:34
整数除法(包括长,短,字节,CHAR,INT)在Java中总是返回int(或long,如果其中一个参数很长),向零舍入。此计算后您的转换发生。
(格式化的问题已经被其他的答案回答 - 或者你也可以看看java.text.NumberFormat中,特别是java.text.DecimalFormat中。)
如果使用int
值,使用double
可能是更好的选择,并且舍入误差更小。 float
可以代表int
的值,不会出现错误高达1600万。 double
可准确表示所有int
值。
double percentage =(double) totalOptCount/totalRespCount;
百分比通常乘以100,这意味着你可以删除的演员。
double percentage = 100.0 * totalOptCount/totalRespCount;
格式化一张双人床和打印出一个百分比,可以使用使用
System.out.println(new DecimalFormat("##.##").format(yourDouble) + "%"));
(totalOptCount/totalRespCount)
这里既有被除数和除数是int
型的,这意味着他们将只允许整数值,这个方程的答案将总是一个整数文字。
,如果我打破这个它会像下面
(double)(500/1500)
根据实际计算,一千五百分之五百会给你0。33333,但是编译器将其转换成整数文字,因为两个操作数是int类型的
(double)(0)
编译得到的指令来施放此0
值加倍,这样你有0.0
作为结果
0.0
然后您可以将结果更改为@Zach Janicki提供的任何格式。
请记住,如果两个操作数的类型相同,结果也是相同的类型。
Float(百分比))在此Float中显示错误 – kiran 2011-02-08 10:48:14
String str = String.format(“%2.02f”,(float)percentage);像这样改变。它的工作,谢谢解开 – kiran 2011-02-08 10:57:53