java基础 - java.lang.Math中的 round(), ceil(), floor() 比较?
总结
- Math.round() “四舍五入”, 该函数返回的是一个四舍五入后的的整数。
- 负数,小数点第一位是5时,直接舍去,整数部分不 +1; 正数,小数点第一位是5时,往整数部分 +1
-
12345678
double
d =
3.1415926
;
double
d2 =
18.58
;
double
d3 = -
15.23
;
double
d4 = -
16.85
;
long
round1 = Math.round(d);
// 结果 3
long
round2 = Math.round(d2);
// 结果 19
long
round3 = Math.round(d3);
// 结果 -15
long
round4 = Math.round(d4);
// 结果 -17
1234double
d5 = -
16.5
;
double
d6 =
16.5
;
long
round5 = Math.round(d5);
// 结果 -16
long
round6 = Math.round(d6);
// 结果 17
- Math.ceil() “向上取整”(ceil天花板的意思), 即小数部分直接舍去,并向正数部分进1
-
123456789101112131415
double
d =
3.1415926
;
double
d2 =
18.58
;
double
d3 = -
15.23
;
double
d4 = -
16.85
;
double
d5 = -
16.5
;
double
d6 =
16.5
;
double
ceil1 = Math.ceil(d);
// 结果 4.0
double
ceil2 = Math.ceil(d2);
// 结果 19.0
double
ceil3 = Math.ceil(d3);
// 结果 -15.0
double
ceil4 = Math.ceil(d4);
// 结果 -16.0
double
ceil5 = Math.ceil(d5);
// 结果 -16.0
double
ceil6 = Math.ceil(d6);
// 结果 17.0
【注】该数为小数时,小数部分直接舍去
-
- Math.floor() “向下取整” (floor地板的意思) ,即小数部分直接舍去
-
123456789101112131415161718192021
double
d =
3.1415926
;
double
d2 =
18.58
;
double
d3 = -
15.23
;
double
d4 = -
16.85
;
double
d5 = -
16.5
;
double
d6 =
16.5
;
double
floor1 = Math.floor(d);
// 结果 3.0
double
floor2 = Math.floor(d2);
// 结果 18.0
double
floor3 = Math.floor(d3);
// 结果 -16.0
double
floor4 = Math.floor(d4);
// 结果 -17.0
double
floor5 = Math.floor(d5);
// 结果 -17.0
double
floor6 = Math.floor(d6);
// 结果 16.0
【注】 Math.floor()容易出现精度问题,举个最简单例子:
对小数
8.54
保留两位小数(虽然它已经保留了
2
位小数):
Math.floor(
8.54
*
100
)/
100
// 输出结果为 8.53, 注意是 8.53 而不是 8.54。
所以这种函数慎用。
-
参考
https://blog.csdn.net/zuihongyan518/article/details/96978200
分类:
Java 基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?