首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Math.ceil(1/2) 返回 0.0 的原因:整數除法陷阱

     編輯:程式設計疑難解答

Java 中 Math.ceil(0.5) 返回 1.0 符合預期,但 Math.ceil(1/2) 卻返回 0.0。這是因為 1/2 發生了整數除法。

詳細解析

  • 1 和 2 都是 int 字面量。
  • Java 中 int / int 結果仍為 int,向零截斷:1/2 = 0。
  • Math.ceil(0) 接收 int 參數會隱式轉為 double,即 Math.ceil(0.0),返回 0.0。

正確寫法

至少一個操作數為浮點數:

Math.ceil(1.0 / 2)   // 1.0 是 double,結果 0.5 → ceil → 1.0
Math.ceil(1 / 2.0)   // 同理
Math.ceil((double)1 / 2)  // 顯式轉型

避坑指南

  1. 涉及除法需浮點結果時,確保操作數包含 float 或 double。
  2. 使用 1.0、2.0f 等字面量標識浮點類型。
  3. 工具類方法(如 Math.ceil、Math.floor)參數為 double,傳入整數會先隱式擴寬,但運算已在調用前完成。

總結

Math.ceil(1/2) 之所以返回 0.0,是因為整數除法 1/2 先算出 0,再傳給 ceil。只要讓除法在浮點域進行,即可得到預期的 1.0。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved