在之前写代码的时候这个小细节出现过两次,主要是对Java向上取整以及向下取整方法的理解不够透彻
下面来介绍将小数值舍入为整数的几个方法:Math.ceil()、Math.floor()和Math.round()。 这三个方法分别遵循下列舍入规则:
- Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
- Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
- Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)。
记下笔记加深印象,事不过三,错误代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| public class Pager{ private Integer pageSize = 2; private Integer totalCount; }
public List<User> findAllStudentInfo(Pager pager) { pager.setTotalCount(studentService.findStuInfoCount(map)); pager.setTotalPages((int)Math.ceil(pager.getTotalCount()/pager.getPageSize()); return studentService.findAllStudentInfo(map); }
public List<User> findAllStudentInfo(Pager pager) { pager.setTotalCount(studentService.findStuInfoCount(map)); double totalCount = studentService.findStuInfoCount(map); double pageSize = pager.getPageSize(); double result = totalCount/pageSize; pager.setTotalPages((int)Math.ceil(result)); return studentService.findAllStudentInfo(map); }
|
我上面的错误代码之所以错误,是因为一心求快,本来我类的属性类型是Integer类型的。如果直接
在ceil()函数里面直接执行 3/2 结果当然是 1 而不是1.5,那么对1去执行向上取整根本没有任何意义,
所以,首先要明白向上取整,向下取整函数是对什么类型的数据进行操作的,明白了这点,再看一下我正确代码
好像一切就有点顺理成章了。出现这个问题,主要是自己对这两个函数的理解不够深刻。希望事不过三,是不是意味着我还有一次机会?哈哈!!