当前位置: 首页 > 知识库问答 >
问题:

在java中获取下一个更高的整数值[duplicate]

司空镜
2023-03-14

我知道我可以使用Math.java函数获得double或float的下限、上限或舍入值,但我的问题是——如果我的值中有一个小数点,有可能总是获得较高的整数值吗

举个例子。

int chunkSize  = 91 / 8 ; 

这将等于11.375

如果我对这个数字应用floor、ceil或round,它将返回11,我想要12。

简单地说,如果我有11.xxx,我需要得到12,如果我有50.xxx,我想要51

对不起,块大小应该是int

我怎样才能做到这一点?

共有3个答案

施德运
2023-03-14

如果你想做整数除法,你可以

x / y 向上舍入,假设 x 和 y 为正数

long div = (x + y - 1) / y;

在你的情况下

(91 + 8 - 1) / 8 = 98 / 8 = 12

这是因为您希望对除精确倍数之外的每个值进行四舍五入(加一)(这就是为什么添加y-1

寿浩言
2023-03-14

赛尔应该做到这一点。我引用:

返回大于或等于参数且等于数学整数的最小(最接近负无穷大)双精度值。

编辑:(感谢彼得·劳里):再看看你的代码,你有另一个问题。您将整数除法的结果存储在一个浮点变量中:< code > float chunk size = 91/8; java查看除法的参数,因为它们都是整数,所以它执行整数除法,因此结果也是整数(除法的结果向下舍入)。现在,即使您将它赋给float chunkSize,它仍然是一个整数(缺少双精度部分),并且ceil、round和floor都将返回相同的值。为了避免在< code>91上添加一个< code > . 0 :< code > float chunkSize = 91.0/8;。这使得其中一个参数具有双精度,因此将执行双除法,返回双精度结果。

姚棋
2023-03-14

数学。ceil()将完成这项工作。

但是,您认为91/811.375的假设是错误的。在java中,整数除法返回除法的整数值(在本例中为11)。

为了获得浮点值,您需要对其中一个参数进行强制转换(或添加.0):

float chunkSize  = 91 / 8.0 ;
Math.ceil(chunkSize); // will return 12!
 类似资料:
  • 如何获取对象的值并将其存储在int变量中?在字符串中,我执行以下操作: 用int怎么样?

  • 问题内容: 我正在用c#。创建一个Winform应用程序,并使用sql数据库。 我有一个表,其中有列,如和。是自动递增,所有其他数据类型是。 我正在使用此代码来获取下一个自动增量值: 我在textBox上显示。 但是,当删除表中的最后一行时,我仍然得到该值,该值最近在文本框中删除了 我应该如何获得下一个自动增量值? 问题答案: 要从SQLServer获取下一个自动增量值: 这将获取当前的自动增量值

  • 问题内容: 我正在尝试编写一个从用户读取5个整数并返回最高和最低值的类。这必须使用循环来完成,而不能使用数组和Integer.MIN.Value / Integer.MAX.Value。我已经成功编写了从用户那里获取5个整数并返回最大值的代码,但是我无法同时获取同一类中返回的最大值和最小值。 这是我上面提到的代码: 问题答案: 干得好 :)

  • 问题内容: for (Entry entry : map.entrySet()) { Double key = entry.getKey(); String value = entry.getValue(); 迭代地图时是否可以知道上一个元素和下一个元素是什么? 问题答案: 您可以使用此方法,它的迭代器以升序顺序返回条目: 每个条目检索都是O(logN),因此对于完整迭代而言,这不是最有效的方法。

  • 我正在处理一个程序,我想允许用户在提示时输入多个整数。我曾尝试使用扫描仪,但发现它只存储用户输入的第一个整数。例如: 输入多个整数:1 3 5 扫描仪将仅获取第一个整数1。是否有可能从一行中获取所有3个不同的整数,并在以后使用它们?这些整数是我需要根据用户输入操作的链表中数据的位置。我无法发布我的源代码,但我想知道这是否可行。