为了账号安全,请及时绑定邮箱和手机立即绑定

为什么两个整数的除法在Java中返回0.0?

为什么两个整数的除法在Java中返回0.0?

为什么两个整数的除法在Java中返回0.0?int totalOptCount = 500;int totalRespCount=1500; float percentage =(float)(totalOptCount/totalRespCount);为什么它总是返回值0.0?另外,我想把这个格式化成00.00格式并转换成字符串?
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

因为从浮点到浮点的转换是在除法完成之后发生的。你需要:

float percentage = ((float) totalOptCount) / totalRespCount;

您应该能够使用以下内容进行格式化:

String str = String.format("%2.02f", percentage);


查看完整回答
反对 回复 2019-07-11
?
www说

TA贡献1775条经验 获得超8个赞

如果你用int值,使用double可能是一个更好的选择,并有较少的四舍五入错误。float能代表int值,无错误,最多可达1600万。double能够准确地表示所有int价值。

double percentage =(double) totalOptCount / totalRespCount;

百分比通常乘以100,这意味着您可以放弃转换。

double percentage = 100.0 * totalOptCount / totalRespCount;


查看完整回答
反对 回复 2019-07-11
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

(totalOptCount/totalRespCount)

在这里,股息和除数都是类型的。int这意味着它们只允许整数值,并且这种方程的答案总是整数字面意思。

如果我把它弄坏了,它会像下面这样

(double)(500/1500)

根据实际计算,500/1500将给出0.33333,但编译器会将其转换为整数文字,因为这两个操作数都是int类型。

(double)(0)


编译器将获得一条指令来转换为0价值翻倍这样你就能得到0.0结果

0.0

然后,您可以将结果更改为@ZachJanicki推荐的任何格式。

请记住,如果两个操作数都是相同类型的,则结果也是相同类型的。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 2461 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信