Math.round()的四舍五入问题
来源:互联网 发布:淘宝敲诈勒索 编辑:程序博客网 时间:2024/04/30 03:29
Math.round()的四舍五入问题
在java中我们通常用Math.round()来做四舍五入操作,但有时候结果却令人很难理解,例如下面的程序:
public static void main(String[] args) {
System.out.println(Math.round(11.5));
System.out.println(Math.round(-11.5));
}
按照正常的理解,结果应该是12和-12,但实际的输出却是:
12
-11
很显然这个结果与我们预想的结果有差别。那么问题出在哪呢?我们先看round()方法的底层实现:
public static long round(doublea) {
return (long)floor(a +0.5d);
}
从代码中,我们可以看到round(a)实际上等于Math.floor(a+0.5)。floor()方法意思是向下取整。floor(a)得到的是不大于a的最大整数。这个不大于就是上述问题产生的原因。round(-11.5)=floor(-11.5+0.5)=floor(-11.0),其结果便是-11(<=-11.0),而round(-11.6)=floor(-11.6+0.5)=floor(-11.1),其结果就是-12(<=-11.1)。
其它:与floor()对应的还有ceil()方法,ceil(a)是取不小于a的最小整数。如:ceil(-11.4)=-11.0,ceil(-11.5)=-11.0,ceil(-11.6)=-11.0, ceil(-11.0)=-11.0
- Math.round()的四舍五入问题
- Math.Round函数四舍五入的问题
- Math.Round 不同的四舍五入
- Math.round四舍五入的理解
- Math.Round()方法的四舍五入(.NET)
- java Math.round()比较特殊的四舍五入
- Math.Round 之关于 不同的四舍五入
- java Math.round()比较特殊的四舍五入
- Math.Round 之关于 不同的四舍五入
- Math.Round 四舍五入函数
- Math.round四舍五入
- 关于 java 中负数四舍五入的问题——Math.round()
- Javascript四舍五入(Math.round()与Math.pow())
- Javascript四舍五入(Math.round()与Math.pow())
- Javascript四舍五入(Math.round()与Math.pow())
- C#中Math.Round四舍五入的用法详解,
- C#中的Math.Round使用的"四舍五入"法
- js的向上取整(Math.ceil)向下取整(Math.floor)四舍五入(Math.round)
- 视频播放过程中,解码时利用宏块信息来自动插入广告
- jQuery的图片放大器插件 jQzoom
- Android横屏竖屏判断--全屏设置--取屏幕宽高
- 编译错误疑难杂症总结
- 自己关于 xslt的记录
- Math.round()的四舍五入问题
- 应用互相调用
- 对window的注册表进行优化
- typedef 名字的作用你知道多少?
- 获取当前实例测量得出的总运行时间(以毫秒为单位)。
- django随机实践练习
- 【Leetcode】Gas Station
- git - 简易指南
- 在JIRA的一个项目中,如何设置让项目中的问题可以设置不同的权限让不同的人看到。