如何在Java中对整数除法进行取整并得到整数结果?[副本]

这个问题在这里已经有答案了
如何对整数除法的结果进行取整?

(17个答案)

两年前关闭的

我刚刚写了一个计算手机短信页数的小方法。我没有选择使用Math.ceil,老实说,它看起来非常难看

这是我的密码:

公共类主{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
String message=“今天,我们在优化光线投射算法时偶然发现了一个巨大的性能漏洞。让我们大吃一惊的是,Math.floor()该方法占用了几乎一半的计算时间:3个floor操作占用的时间与一个三线性插值相同。由于我们无法相信floor方法会产生如此巨大的开销,因此我们编写了一个小的测试程序,该程序可以重现“三次插值”;
System.out.printf(“计数为%d”,(int)messagePageCount(message));
}
公共静态双消息页面计数(字符串消息){
if(message.trim().isEmpty()| | message.trim().length()=0){
返回0;
}否则{
if(message.length()<=160){
返回1;
}否则{
返回Math.ceil((double)message.length()/153);
}
}
}

我真的不喜欢这段代码,我正在寻找一种更优雅的方式来实现它。有了它,我期望的是3,而不是3.0000000。有什么想法吗

使用Math.ceil()并将结果强制转换为int:

  • 这仍然比使用abs()避免双打更快
  • 使用负片时,结果是正确的,因为-0.999将四舍五入为0

例如:

(int)Math.ceil((双)除数/除数);

发表评论