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

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

int totalOptCount = 500;int totalRespCount=1500; float percentage =(float)(totalOptCount/totalRespCount);

为什么它总是返回值0.0?另外,我想把这个格式化成00.00格式并转换成字符串?


收到一只叮咚
浏览 2463回答 3
3回答

汪汪一只猫

因为从浮点到浮点的转换是在除法完成之后发生的。你需要:float percentage = ((float) totalOptCount) / totalRespCount;您应该能够使用以下内容进行格式化:String str = String.format("%2.02f", percentage);

www说

如果你用int值,使用double可能是一个更好的选择,并有较少的四舍五入错误。float能代表int值,无错误,最多可达1600万。double能够准确地表示所有int价值。double percentage =(double) totalOptCount / totalRespCount;百分比通常乘以100,这意味着您可以放弃转换。double percentage = 100.0 * totalOptCount / totalRespCount;

开心每一天1111

(totalOptCount/totalRespCount)在这里,股息和除数都是类型的。int这意味着它们只允许整数值,并且这种方程的答案总是整数字面意思。如果我把它弄坏了,它会像下面这样(double)(500/1500)根据实际计算,500/1500将给出0.33333,但编译器会将其转换为整数文字,因为这两个操作数都是int类型。(double)(0)编译器将获得一条指令来转换为0价值翻倍这样你就能得到0.0结果0.0然后,您可以将结果更改为@ZachJanicki推荐的任何格式。请记住,如果两个操作数都是相同类型的,则结果也是相同类型的。
打开App,查看更多内容
随时随地看视频慕课网APP