今天天气晴朗,天上下着冰雹,正是写代码的好时光。
公司领导对一群Java实习生组织了一个考核,题目如下:
设计一个程序输入任意一个数字,输出该数字的整数部分。
考核时间:下班前完成。
实习生们都觉得这很简单,马上开干,实习生四毛一个五分钟就完成了程序的编辑,而实习生九毛第二天中午十一点五十九 分就完成了,他们都根据考核要求在下班前完成了这次考核任务,把代码交给了领导查验。对于按时完成考核,他们应该得到奖励,奖励一朵小红花:
领导看了四毛的代码,感到非常生气!然后给九毛涨了一块钱工资。他们的成绩如下:
我们再来看看他们写的代码,先看看四毛的:
...公司要求保密省略一部分...
System.out.println("请输入一个任意数字:");
...公司要求保密省略一部分...
int i = (int)Double.parseDouble(scan.next());
System.out.println("您输入的数字的整数部分为:"+i);
...公司要求保密省略一部分...
输入-1.5,竟然输出的是-1!正确的值应该是-2。
再来看看九毛的代码:
...公司要求保密省略一部分...
System.out.println("请输入一个任意数字:");
...公司要求保密省略一部分...
int i = Math.floor(Double.parseDouble(scan.next()));
System.out.println("您输入的数字的整数部分为:"+i);
...公司要求保密省略一部分...
输入-1.5,输出的是-2,正确!
四毛自己去实现一个取整方法,这种方法估计不少人曾经用过来取整,中招的在评论区举个手吗?
java.lang.Math提供了很多数学相关方法,非常强大,建议还是不要造轮子,用经过大量测试成熟的方法去写代码降低BUG发生的几率。
最后我们再来看看Math里和这次考核相关的方法:
数学意义上的取整数部分:Math.floor(-1.5)=-2
四舍五入取整:Math.rint(-1.5)=-2
进位取整:Math.ceil(-1.1)=-1