java只保留整数_java 除法运算只保留整数位的3种方式

1.情景展示

根据提供的毫秒数进行除法运算,如果将毫秒数转换成小时,小时数不为0,则只取整数位,依此类推...

2.情况分析

可以使用3个函数实现

Math.floor(num)   只保留整数位

Math.rint(num)     余数四舍五入

Math.ceil(num)     取整位,再+1

举例:

double num = 3.1415926;

System.out.println(Math.floor(num));// 3.0

System.out.println(Math.rint(num));// 3.0

System.out.println(Math.ceil(num));// 4.0

网上取整的例子到这就结束啦,都说了只取整数位,返回的是一个double类型的数字,所以,还需要强转成整数。

这次是正确答案!

double num = 3.1415926;

System.out.println((int)Math.floor(num));// 3

System.out.println((int)Math.rint(num));// 3

System.out.println((int)Math.ceil(num));// 4

3.解决方案

// 还差多长时间执行,单位:毫秒数

long exeTime = 1234567;

// 时间单位

String timeUnit = "";

// 首次执行剩余时间

int remaTime = 0;

if (Math.floor(exeTime/1000/3600) > 0) {

remaTime = (int)Math.floor(exeTime/1000/3600);

timeUnit = "小时";

} else if (Math.floor(exeTime/1000/60) > 0) {

remaTime = (int)Math.floor(exeTime/1000/60);

timeUnit = "分钟";

} else {

remaTime = (int)Math.floor(exeTime/1000);

timeUnit = "秒";

}

System.out.println("启动定时器...SbptAction...距离任务执行还有" + remaTime + timeUnit + "!");

4.问题扩展

这样写,有一个问题,如果你的项目使用了SonarLint代码检测工具,原生的代码检测会报错。

7c7fca3930f219a93b2d3bef9e9c604c.png

意思是说:这样的算法很简单,根本不需要调用取整函数,就能知道结果。属于严重错误级别。

吐槽:这个规则很傻逼,它根本不知道咋回事,还说你愚蠢。

如何规避这个错误检测规则?

double hours = exeTime/1000/3600;

double minutes = exeTime/1000/60;

double seconds = exeTime/1000;

if (Math.floor(hours) > 0) {

remaTime = (int)Math.floor(hours);

timeUnit = "小时";

} else if (Math.floor(minutes) > 0) {

remaTime = (int)Math.floor(minutes);

timeUnit = "分钟";

} else {

remaTime = (int)Math.floor(seconds);

timeUnit = "秒";

}

使用上述代码进行替换,就不会报严重错误了!

写在最后

哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

标签:java,运算,floor,int,remaTime,num,exeTime,除法,Math

来源: https://www.cnblogs.com/Marydon20170307/p/10671478.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值