首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数学简单示例

数学简单示例
EN

Stack Overflow用户
提问于 2016-04-01 21:40:40
回答 2查看 56关注 0票数 1

我在试着做简单的数学运算。a=5,b=a/2 &(向上舍入),当我向上舍入时,它必须是5/2 = 3,c= b -a,3-5=2。我的问题是,当我除以5/2并向上舍入时,B得到2而不是3。有人能帮助我如何向上取整得到3吗?谢谢

代码语言:javascript
运行
复制
int a=5;

int b=(int)Math.ceil(a/2);

int c=b-a;


System.out.println(b);

System.out.println(c);
EN

回答 2

Stack Overflow用户

发布于 2016-04-01 21:42:15

您应该在该行中使用2的浮点值,而不是整数:

代码语言:javascript
运行
复制
int b = (int) Math.ceil(a / 2f);//also you can use "2.0" or "2d" instead of "2f"

您的版本使用int除法(生成2int值)和2f常量强制使用浮点除法并将a值提升为float (在除法后生成float2.5值)

这要归功于Multiplicative Operators的JLS规范。

在操作数上执行

二进制数字升级(§5.6.2)

在我们的例子中,这就是numeric promotionintfloat除法操作数的工作方式:

加宽基元转换(§5.1.2)用于按照以下规则转换其中一个或两个操作数:如果其中一个操作数的类型为double,则另一个操作数转换为double。否则,如果其中一个操作数的类型为float,则另一个操作数将转换为float。

票数 4
EN

Stack Overflow用户

发布于 2016-04-01 21:49:13

你可以使用一个小技巧来让事情变得更快:

代码语言:javascript
运行
复制
int b =(a + 1) / 2;

由于您除以2,以防数字与+ 1为奇数,因此您将获得精确的上舍入数值。如果数字与+1是偶数,则四舍五入将按预期给出其一半。

编辑

或者一般来说,如果你想计算Math.ceil(a / b),你可以用下面的公式:(a + b - 1) / b,假设a和b是正的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36357866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档