在 Java 中,Double(双精度浮点数)取整有多种方式,具体取决于你想要的“取整规则”。下面按常见场景说明:
规则:直接丢弃小数部分(向零取整)
double d = 3.9;
long i = (long) d; // 3
double d = -3.9;
long i = (long) d; // -3
✅ 适合:只需要整数部分,不关心四舍五入
Math.floor()(向下取整)规则:返回 ≤ 该值的最大整数
Math.floor(3.2); // 3.0
Math.floor(-3.2); // -4.0
long i = (long) Math.floor(3.9);
Math.ceil()(向上取整)规则:返回 ≥ 该值的最小整数
Math.ceil(3.2); // 4.0
Math.ceil(-3.2); // -3.0
Math.round()(四舍五入)规则:最接近的整数(等价 +0.5 后 floor)
Math.round(3.4); // 3
Math.round(3.5); // 4
Math.round(-3.5); // -3
⚠️ 返回值是 long
long i = Math.round(3.9);
BigDecimal(精确取整,推荐用于金额)避免浮点误差
BigDecimal bd = new BigDecimal("3.567");
long i = bd.setScale(0, RoundingMode.HALF_UP).longValue();
支持的舍入模式:
HALF_UP(四舍五入)FLOORCEILINGDOWNString s = String.format("%.0f", 3.6); // "4"
| 方法 | 3.2 | 3.8 | -3.2 | -3.8 |
|---|---|---|---|---|
(long) |
3 | 3 | -3 | -3 |
| floor | 3 | 3 | -4 | -4 |
| ceil | 4 | 4 | -3 | -3 |
| round | 3 | 4 | -3 | -4 |
如果你能说下具体业务场景(比如金额、分页、坐标),我可以给你最合适的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。