【问题标题】:Why is Math.ceil not rounding upwards?为什么 Math.ceil 不向上舍入?
【发布时间】:2014-06-05 14:09:19
【问题描述】:

我有以下代码:

int total = 6;
int perPage = 5;
double pages = total/perPage;
double ceilPages = Math.ceil(pages);
out.println(ceilPages);

哪个输出1.0

我认为它应该输出2.0,因为total/perPage 的结果是1.2

为什么不向上舍入到2.0

【问题讨论】:

  • 您正在执行整数除法而不是浮点除法。
  • int ceilPages = (total + perPage - 1) / perPage; 更整洁。
  • 您是否尝试打印pages 以查看您传递给Math.ceil() 的值?那会立即告诉您问题不在于Math.ceil()
  • (int)Math.ceil(3/2.0) 将给出答案 2 (int)Math.ceil(3/2) 将给出答案 1 为了获得浮点值,您需要强制转换(或添加 .0)到参数之一

标签: java math ceil


【解决方案1】:

您将整数除法的结果转换为双精度数。

您需要将除法的每个部分都转换为结果之前的两倍。

double pages = (double)total/(double)perPage;

其余的应该可以工作

【讨论】:

  • 不是每个部分。投射第一个就足够了。
【解决方案2】:

(int)Math.ceil(3/2.0) 会给出答案 2

(int)Math.ceil(3/2) 会给出答案 1

为了获得浮点值,您需要强制转换(或添加 .0)到参数之一

【讨论】:

    【解决方案3】:

    双页 = Math.ceil((double)total/perPage);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-29
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多