kir*_*ran 49 java floating-point integer-division
int totalOptCount = 500;
int totalRespCount=1500;
float percentage =(float)(totalOptCount/totalRespCount);
Run Code Online (Sandbox Code Playgroud)
为什么这总是返回值0.0?另外我想将其格式化为00.00格式并转换为字符串?
unw*_*ind 93
因为转换为浮动发生在除法完成之后.你需要:
float percentage = ((float) totalOptCount) / totalRespCount;
Run Code Online (Sandbox Code Playgroud)
您应该能够使用以下内容进行格式化:
String str = String.format("%2.02f", percentage);
Run Code Online (Sandbox Code Playgroud)
Pet*_*rey 12
如果您正在使用int
值,则使用a double
可能是更好的选择并且具有更少的舍入误差. float
可以表示int
没有错误的值达到约1600万.double
可以准确地表示所有int
值.
double percentage =(double) totalOptCount / totalRespCount;
Run Code Online (Sandbox Code Playgroud)
百分比通常乘以100,这意味着你可以放弃演员阵容.
double percentage = 100.0 * totalOptCount / totalRespCount;
Run Code Online (Sandbox Code Playgroud)
小智 6
(totalOptCount/totalRespCount)
这里被除数和除数都属于类型int
,这意味着它们只允许整数值,并且此类等式的答案将始终是整数文字。
如果我打破这个,它会像下面这样
(double)(500/1500)
根据实际计算,500/1500 会给你 0.33333 但编译器会将其转换为整数文字,因为两个操作数都是 int 类型
(double)(0)
编译器收到一条指令将此0
值转换为双倍,因此您得到了0.0
结果
0.0
然后您可以将结果更改为@Zach Janicki 建议的任何格式。
请记住,如果两个操作数的类型相同,那么结果也将是相同的类型。
归档时间: |
|
查看次数: |
58702 次 |
最近记录: |