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

2019/05/23 补充:

Java整数之间的除法运算,默认只返回整数位,也就相当于Math.floor()函数了。

方式四:

double num = 3.1415926;

// 直接使用int进行强制转换

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

num = 3.789;

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

// 整数运算,默认将运算结果强制转换成了整数(只保留整数位)

int i4 = 1/10;

System.out.println(i4);//0

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代码检测工具,原生的代码检测会报错。

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

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

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 = "秒";

}

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

5.最佳解决方案

当我知道Java整数之间的除法运算,默认只返回整数位时,才恍然大悟,上面的校验规则报错的原因:

因为运算结果本身返回只有整数位,虽然结果用double接收的,但其本质仍然是个整数,

所以,就没有必要调用Math.floor()来只取整数位了,直接强制转换成int就可以了!

// Java整数间的除法运算,默认只保留整数位

double hours = exeTime/1000/3600;

double minutes = exeTime/1000/60;

double seconds = exeTime/1000;

// hours,minutes,seconds的结果只可能为0.0/1.0/2.0等(即小数位永远为0),不可能为:0.1/1.1/2.1

if (hours > 0) {

remaTime = (int)hours;

timeUnit = "小时";

} else if (minutes > 0) {

remaTime = (int)minutes;

timeUnit = "分钟";

} else {

remaTime = (int)seconds;

timeUnit = "秒";

}

写在最后

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

相关推荐:

Java 整数间的除法运算如何保留所有小数位?

个人主页

java只保留整数_java 除法运算只保留整数位的4种方式相关推荐

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

    1.情景展示 根据提供的毫秒数进行除法运算,如果将毫秒数转换成小时,小时数不为0,则只取整数位,依此类推... 2.情况分析 可以使用3个函数实现 Math.floor(num)  只保留整数位 Ma ...

  2. java 设置session超时_Java设置session超时(失效)的三种方式

    转自:http://blog.csdn.net/hu_shengyang/article/details/8021435 1.      在web容器中设置(此处以tomcat为例) 在tomcat- ...

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

    1.情景展示 根据提供的毫秒数进行除法运算,如果将毫秒数转换成小时,小时数不为0,则只取整数位,依此类推... 2.情况分析 可以使用3个函数实现 Math.floor(num)  只保留整数位 Ma ...

  4. java applet怎么运行_Java如何运行Applet?运行Applet的两种方式

    详细内容 applet是一个小型的动态Java程序,那么如何运行Applet?本篇文章就给大家介绍Applet,让大家了解Applet是什么,运行Applet的方法,希望对你们有所帮助. Java a ...

  5. java 设置word刷新_Java 设置Word中的表格自适应的3种方式

    概述 class="MsoNormal">在Word创建表格时,可设置表格"自动调整",有3种情况,通过Java程序设置可调用相应的方法来实现,即: 根据 ...

  6. java reds 集群_java项目中配置redis-cluster集群的两种方式

    本文分两部分: (1)jedisCluster (2)Spring-Data-Redis集群配置和RedisTemplate用法 我这里是在本机上搭建的3主3从6个redis实例. 一,jedisCl ...

  7. Java除法运算(保留小数)

    编程的人都知道,java中的"/"."%"运算,其中前者为取整,后者取余数.那么有没有快捷的运算方法取正常的运算结果呢? 查了资料,发现很简单.代码如下: /* ...

  8. java 除 取模_除法运算和取模

    package review20140420; /* * 除法和取模(整数除以整数,会出现除数不能为零的异常) */ public class Test2 { //程序的入口 public stati ...

  9. Android除法运算,保留小数

    进行Android开发已经差不多2年多了,第一次写这个博客. 再开发中遇到int/int,我们希望保留小数点,那怎么办呢? 我写了个方法可以进行此操作. /*** 提供(相对)精确的除法运算.当发生除 ...

最新文章

  1. pta 整型关键字的平方探测法散列
  2. web前端之JavaScript
  3. java导入自定义类_导入自定义Java类
  4. BoW图像检索Python实战
  5. 如何快速向数据库插1000万数据?4种方法对比,它简单却速度最快
  6. 概述SharePoint 2007
  7. java 运行环境注册表_Java运行环境与Windows注册表
  8. linux的apache2.4限定某个目录禁止解析PHP及user_agent与PHP相关配置
  9. linux闹钟软件下载,电量充满警示闹铃
  10. 社会化生态农场品,社群+农产品,大有搞头
  11. Jetson TK1 一:调整屏幕分辨率
  12. 【驱动】linux设备驱动·字符设备驱动开发
  13. ASP.NET Core Web多语言项目
  14. 百度指数查关键词(惊到我啦)
  15. S7-200SMART编程软件在符号绝对模式下变量符号名显示不全的解决办法
  16. 本科三级专业目录计算机类,大学本科专业目录
  17. 【合作伙伴大练兵-安全】NGFW盒式防火墙问题排查和维护
  18. 无人驾驶环境感知设备中 激光雷达和摄像头各自的优缺点
  19. 网络文件共享服务之NFS
  20. Centos操作系统yum源的使用

热门文章

  1. MOOC 翁恺C语言 第五周编程练习2 念整数
  2. 卷积神经网络经典论文集合(深度学习分类篇)
  3. (附源码)计算机毕业设计ssm仿咸鱼二手物品交易系统
  4. 彩世界导航谈网站导航该如何优化?
  5. Taro小程序 生成二维码
  6. 欧元区利好消息推动,非美震荡上扬
  7. 编译原理_正规集和正规式_有限自动机
  8. linux命令zxvf
  9. cesium draw点线面
  10. linux安装pil库_python安装pil库方法及代码