关于 java 中负数四舍五入的问题——Math.round()
来源:互联网 发布:淘宝价格区间怎么设置 编辑:程序博客网 时间:2024/05/16 08:38
在 java 中负数的四舍五入跟我们平常遇到的情况稍有不同,比如:-9.5,通常四舍五入后应该是 -10,而 java 中通过 java.lang.Math.round(-9.5) 运算后的结果是 -9,为什么呢?其实很简单,这个是 java 对 round 方法的定义导致的,看下 round() 方法的源代码就知道了,看起来这个方法有点偷懒:
/** * Returns the closest {@code int} to the argument, with ties * rounding up. * * <p> * Special cases: * <ul><li>If the argument is NaN, the result is 0. * <li>If the argument is negative infinity or any value less than or * equal to the value of {@code Integer.MIN_VALUE}, the result is * equal to the value of {@code Integer.MIN_VALUE}. * <li>If the argument is positive infinity or any value greater than or * equal to the value of {@code Integer.MAX_VALUE}, the result is * equal to the value of {@code Integer.MAX_VALUE}.</ul> * * @param a a floating-point value to be rounded to an integer. * @return the value of the argument rounded to the nearest * {@code int} value. * @see java.lang.Integer#MAX_VALUE * @see java.lang.Integer#MIN_VALUE */ public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float value less than 0.5 return (int)floor(a + 0.5f); else return 0; } /** * Returns the closest {@code long} to the argument, with ties * rounding up. * * <p>Special cases: * <ul><li>If the argument is NaN, the result is 0. * <li>If the argument is negative infinity or any value less than or * equal to the value of {@code Long.MIN_VALUE}, the result is * equal to the value of {@code Long.MIN_VALUE}. * <li>If the argument is positive infinity or any value greater than or * equal to the value of {@code Long.MAX_VALUE}, the result is * equal to the value of {@code Long.MAX_VALUE}.</ul> * * @param a a floating-point value to be rounded to a * {@code long}. * @return the value of the argument rounded to the nearest * {@code long} value. * @see java.lang.Long#MAX_VALUE * @see java.lang.Long#MIN_VALUE */ public static long round(double a) { if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5 return (long)floor(a + 0.5d); else return 0; }
- 关于 java 中负数四舍五入的问题——Math.round()
- JAVA中Math.round负数的“五舍六入”
- Math.round()的四舍五入问题
- JAVA中Math.round负数的取值
- Math.Round 之关于 不同的四舍五入
- Math.Round 之关于 不同的四舍五入
- Math.Round函数四舍五入的问题
- java Math.round()比较特殊的四舍五入
- java Math.round()比较特殊的四舍五入
- Math.Round 不同的四舍五入
- Math.round四舍五入的理解
- 关于python3中round()函数的四舍五入问题
- java中关于小数的四舍五入问题
- java中是三个四舍五入的函数Math ceil()、floor()、round()
- C#中Math.Round四舍五入的用法详解,
- java Math.round() Java中的四舍五入函数
- .Net中Math.Round与四舍五入
- C#中Math.Round()实现中国式四舍五入
- 共有50款 计算机视觉库/人脸识别开源软件
- 写给程序猿们的交互设计
- linux kernel 从入口到start_kernel 的代码分析(转)
- Mysql 常用知识点
- 使用条码控件TBarCode SDK编码特殊的Latin-1字符
- 关于 java 中负数四舍五入的问题——Math.round()
- iOS 常识总结1
- “复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备 通过内置的USB HUB 组合而成的设备,比如带录音话筒的USB 摄像头
- const使用详解
- 成员函数的地址
- 《悟透JavaScript》中的知识点
- 第七次试验任务
- mysql导入中文文本数据乱码
- VS2010 C++最简单的检查内存泄露