在调整外部接口获取列表数据时,需要判断是否取完了所有的值,所以需要取整。下面这篇文章主要介绍Java中两个整数相除和上舍入的相关信息,有需要的朋友可以参考一下。
目录
前言:方法一:添加三元运算符的逻辑代码;方法二:使用ceil函数;方法三:其他逻辑的最终总结;附:java向上舍入函数Math.ceil()
前言:
用Java将两个整数相除。如果不可分,默认情况下向下舍入。例如,11除以3的结果是3。然而,在某些情况下(例如,11个糖果,每3个糖果,少于3个糖果,可以堆叠?),我们需要围捕。这种情况我们该怎么办?
方式一: 添加三目运算符逻辑代码
x/y (x % y!=0 ?1 : 0);
这个方法的逻辑很简单。如果x能被y整除,则在x/y的结果上加0,如果y不能整除,则在x/y的结果上加1。
方式二:使用ceil函数
(int)math . ceil((double)x/y);
//或者
(int)math . ceil(x * 1.0/y);
先把被除数转换成double类型,然后用Math.ceil()函数把计算结果向上取整,这个函数在网上经常看到。
方式三:其他逻辑
(x y - 1)/y
为什么这种方法能达到四舍五入的效果?为什么要把y-1加到X上?
为了便于理解,我们通过具体计算来说明。
1.对于可分的情况
x=9,y=3
(x (y-1))/y,x加上一个比y小的数,最后(x (y-1))/y=(x/y).y-1。
商是(x/y),余数是(y-1)。余数相当于两个数的除法结果的小数部分,会被截断,最后得到(x (y-1))/y`=(x/y)。
2.对于不可分的情况
x=11,y=3
11/3=3 .2
x(y-1)=(3 * 3 2)(3-1)=(3 * 3 2-1)3=(3 * 3 3)2-1
x (y - 1)/y=((3 * 3 3) 2 - 1 )/3=4
也就是x不能被y整除,余数必须在1和y-1之间。从中拿出1,给y-1,这样分红就增加一个y,然后商会就增加一个。从0到y-2的余数将被丢弃。
最后总结
第一种方法:最简单,明确,推荐;
第二种方法:虽然常见,但是涉及转换类型太多,个人不推荐。
第三种方法:很巧妙,不太好理解,推荐。
附:java向上取整函数Math.ceil()
java向上取整函数Math.ceil()
百度Math.ceil()函数:“Math.ceil()是常见编程语言中的常见代码。ceil()方法执行向上舍入计算,它返回一个大于或等于函数参数且最接近它的整数。
Math.ceil(param)使用示例:
双倍红利=7;//股息
双倍除数=2;//除数
双标志=0;
int result 1=0;
int result 2=0;
//函数表达式
flag=Math.ceil(被除数/除数);//舍入计算
result1=(int)标志;//将结果转换为int数据类型
//判断公式:整除法
if((被除数百分比除数)==0) {
result2=(int)被除数/(int)除数;//将操作数转换为int数据
}否则{
result2=((int)被除数/(int)除数)1;//将操作数转换为int数据
}
Object[] options={ '成功','取消' };
JooptionPane。Showoptiondialog (null,“函数单元求值=“结果1”;评估='结果2,
警告,JOptionPane。默认选项,
JOptionPane。WARNING_MESSAGE,null,options,options[0]);
结果就是你想要的:(函数公式等价于可除判断公式)
注意:
两个限制:判断公式,适用于整除;它的操作数是int(Integer)数据类型,否则得不到想要的效果。类型,如果你使用int(Integer)作为操作数(parameter),你需要特别注意:
双倍红利=7;//股息
双倍除数=2;//除数
双标志=0;
int result 1=0;
int result 2=0;
//函数表达式
// (int) divide/(int) divide直接将计算结果转换为int类型,所以这里的结果是3。
//(int类型丢失精度,即小数点后的数字丢失。在这个例子中,3.5损失了0.5;
//这涉及到高精度数转换成低精度数时精度的损失。
//精度从低到高int双浮点)。
// Math.ceil(3)函数执行,四舍五入,也是3
//感谢博主“ws458371436”指正。这个地方以前很混乱。幸运的是,博主们小心翼翼地避免误导其他朋友。
flag=Math.ceil((int)被除数/(int)除数);//向上取整计算int=Math.ceil(int),对int整数取整,没必要!
result1=(int)标志;//将结果转换为int数据类型
//判断公式:整除法
if((被除数百分比除数)==0) {
结果2=被除数/除数;//保留双精度数据类型
}否则{
result2=(被除数/除数)1;//保留双精度数据类型
}
Object[] options={ '成功','取消' };
JooptionPane。Showoptiondialog (null,“函数单元求值=“结果1”;评估='结果2,
警告,JOptionPane。默认选项,
JOptionPane。WARNING_MESSAGE,null,options,options[0]);
测试结果:
总结:函数(接口)都有其适应范围和限制条件。正是这些条件划定了基本功能,有了准确的方向,得到了具体的结果。这也是智力。
这就是这篇关于Java中整数除法和舍入的文章。有关Java中整数除法和舍入的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。