Java中四舍五入和四舍六入五成双
Math.round()的取整规则结论:四舍五入下取整
例如
A: 11.2 ----> 11
B: 11.6 ----> 12
C: 11.5--->12
D: 11.51->12
F: -11.5->-11
E: -11.51-> -11.01->-12. 加0.5,然后向下取整数
从感觉上来说,就说得到最靠近的那个整数
下面常用于四舍五入的方式
System.out.println("Hello World!"+ String.format("%.2f",21.865)); // 21.87
四舍六入五成双 BigDecimal+BigDecimal.ROUND_HALF_UP 90%符合吧,实际可能有点出入
只是发现只有保留整数位的时候,不管奇偶都会进1
四舍六入就不废话了,主要看五的情况
double result = new BigDecimal(21.8750).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("Hello World!"+result); 21.88 // 5前面是奇数,进一位
double result = new BigDecimal(21.8650).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("Hello World!"+result); 21.86 // 5前面是偶数,直接舍弃double result = new BigDecimal(21.8651).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("Hello World!"+result); 21.87 // 因为5后面还有有效非0数字,那么肯定要进位了
BigDecimal.ROUND_HALF_DOWN相比BigDecimal.ROUND_HALF_UP,对于5的临界情况都会舍弃,不会进1 double result = new BigDecimal(24.50).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("Hello World!"+result); // 25.0 ,5前面是整数了(不符合四舍六入五成双规则了),不再取决于奇偶,还是BigDecimal.ROUND_HALF_UP的原因,导致进位
double result = new BigDecimal(24.50).setScale(0, BigDecimal.ROUND_HALF_DOWN).doubleValue(); System.out.println("Hello World!"+result); // 24.0 // 临界情况,无论如何,都不会进1
完全符合四舍六入五成双的
参考https://blog.csdn.net/zhao_963084302/article/details/84742614
/*** @param value 需要科学计算的数据* @param digit 保留的小数位* @return* 功能:四舍六入五成双计算法*/public static String sciCal(double value, int digit){String result = "-999";try {double ratio = Math.pow(10, digit);double _num = value * ratio;double mod = _num % 1;double integer = Math.floor(_num);double returnNum;if(mod > 0.5){returnNum=(integer + 1) / ratio;}else if(mod < 0.5){returnNum=integer / ratio;}else{returnNum=(integer % 2 == 0 ? integer : integer + 1) / ratio;}BigDecimal bg = new BigDecimal(returnNum);result = bg.setScale((int)digit, BigDecimal.ROUND_HALF_UP).toString();} catch (RuntimeException e) {throw e;}return result;}
Java中四舍五入和四舍六入五成双相关推荐
- 四舍五入 与 四舍六入五成双
今天公司有个同事在调一个asp程序时候,发现 round(1.25,1) 返回的竟然是1.2 而不是1.3 查询了一下CSDN的帖子,发现这竟然是一个Bug: http://search.csdn.n ...
- C# 四舍五入 (解决四舍六入五成双的问题)
四舍六入五成双是一种精确度的计数保留法.舍入规律是"四舍六入五成双",这里"四"是小于五的意思,"六"是大于五的意思,"五&quo ...
- JAVA计算保留小数-四舍六入五成双
四舍六入五成双 含义: 对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是"四舍六入五成双",也即"4舍6入 ...
- php 四舍五入,PHP 四舍五入,不四舍五入,四舍六入五成双(银行家舍入)
1.php保留两位小数并且四舍五入,代码如下: round(123.666666, 2); // 123.67 2.php保留两位小数并且不四舍五入,代码如下: $offset = strpos($n ...
- java 四舍六入五成双_EXCEL实现四舍六入五成双修约规则的方法
中国药典的修约原则是四舍六入五成双(只是中国药典这样,USP.EP都是四舍五入).四舍六入五成双的修约原则为: 1. 被修约的数字小于5时,该数字舍去: 2. 被修约的数字大于5时,则进位: 3. 被 ...
- Excel中的四舍六入五成双
我们都知道四舍五入是一种精确的计数保留法,但是他就是最精确,最能得到我们想要的吗?反正我之前认为他是可以的,但是今天企业要求我们用了一种新得保留方法,四舍六入五成双,他是一种比较精确比较科学的计数保留 ...
- C语言中的四舍六入五成双 和 四舍五入
%.mf 可以让浮点数保留 m 位小数输出 保留的是精度为 四舍六入五成双 就是 5以下舍弃 5以上进位 而当下一位为5时要讨论: 被化简的小数位后面一位的数字等于5时 要看5前面的数字,若是奇数则进 ...
- java 四舍六入五成双_显示格式的四舍六入五成双
一.问题描述 在使用快逸复杂报表设计" target="_blank" class="quieeLink1">设计器时,若单元格内的信息为数值, ...
- python中round函数的精度保留方法---四舍六入五成双
当我们利用python进行数据计算时,通常会对浮点数保留相应的位数,这时候就会用到round函数,相信各位朋友在进行使用时会遇到各种问题,关于round函数保留精度.保留方法的问题,本文会进行详细的解 ...
最新文章
- Python九十天学习框架,从1到90,从0基础到IQ100
- spring4声明式事务--01注解方式
- 漫步最优化二十九——D.S.C.算法
- jQuery之全选功能
- Spring-boot模块化编程
- python把工作簿拆分为工作表_excel将一个工作表根据条件拆分成多个工作表
- [javascript]实现登陆界面拖动窗口
- CSS 部分知识点 总结
- 软件测试常见断言,5.6 postman 常用的断言
- 苏州软件企业如何办理自产软件产品增值税即征即退
- 执行npm install报错:npm ERR! code EINTEGRITY,npm ERR! 最彻底,最实用的方法就是更新node版本
- 乔治城大学计算机科学硕士2019,[2019世界大学排名]2019乔治城大学排名
- LSF Command
- 手机/笔记本电脑看电视直播
- 日系插画学习笔记(七):日系角色脸部画法-3表情
- Crazy Binary String
- AHCI,SATA,NVME
- 影视剧里程序员使用的双显示屏,在生活中真的需要么?正经科普
- 电脑各修改项【自用】
- 超好用的画图工具推荐
热门文章
- hdu 5145 NPY and girls (莫队算法)
- ICC2 user guide(三)Clock Tree Synthesis
- python 内置函数、匿名函数
- Ubuntu安装搜狗输入法后修改默认英文输入状态的方法
- 【BP靶场portswigger-服务端6】信息泄露漏洞-5个实验(全)
- embarrass的用法和搭配_求embarrass和它对应的形容词的相关用法
- c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...
- 逆向工程核心原理 小结
- MATLAB之Nyquist图和Bode图
- M580PLC以太网读通讯和写通讯