package com.dapeng.common.utils;import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;/*** MathRound 数据修约(4舍6入,5看奇偶)* * @author cxh* */
public class MathRound {private static final String CONST_NULL_STR = "";/*** 4舍5入* @param data * @param scale * @return */public static String commonRound(String data, int scale) {// 如果参数为NULL,则返回空串if (null == data)return CONST_NULL_STR;// 如果参数不为空串,则进行修约if (!CONST_NULL_STR.equals(data.trim())) {BigDecimal bigDecimalData = new BigDecimal(data);BigDecimal scaledData = bigDecimalData.setScale(scale, BigDecimal.ROUND_HALF_UP);return scaledData.toPlainString();}return CONST_NULL_STR;}/*** 4舍6入,5看奇偶* @param data 要转换的数据* @param scale 表示精确到10E-scale.比如1,表示精确到0.1;-1表示精确到十位数* @return 转换之后的数据*/public static String round(String data, int scale) {// 如果参数为NULL,则返回空串if (null == data)return CONST_NULL_STR;// 如果参数不为空串,则进行修约if (!CONST_NULL_STR.equals(data.trim())) {BigDecimal bigDecimalData = new BigDecimal(data);BigDecimal scaledData = bigDecimalData.setScale(scale, BigDecimal.ROUND_HALF_EVEN);return scaledData.toPlainString();}return CONST_NULL_STR;}/*** 保留指定的有效位数(4舍6入,5看奇偶)* * @param value 数值字符串* @param precision 有效位数* @return*/public static String doPrecision(String value, int precision) {// 如果参数为NULL,则返回空串if (null == value)return CONST_NULL_STR;// 如果参数不为空串,则进行修约if (!CONST_NULL_STR.equals(value.trim())) {MathContext mathContext = new MathContext(precision, RoundingMode.HALF_EVEN);int len = 0;if (value.indexOf(".") != -1) {len = value.length() - 1;if (value.indexOf("-") != -1) {--len;}if (len < precision) {for (int i = 0; i < precision - len; i++) {value += "0";}}} else {len = value.length();if (value.indexOf("-") != -1) {--len;}if (len < precision) {value += ".";for (int i = 0; i < precision - len; i++) {value += "0";}}}BigDecimal b = new BigDecimal(value);return b.round(mathContext).toPlainString();}return CONST_NULL_STR;             }/***  进一法* @param scale 保留位数* @param val 字符串* * */public static String exectu(int scale, String val) {BigDecimal decimal = new BigDecimal(val); //scale表示保留scale位小数, BigDecimal.ROUND_UP表示第scale位小数后,只要有值,就向前进1decimal = decimal.setScale(scale, BigDecimal.ROUND_UP); String res = decimal.doubleValue() + "";res = commonRound(res, scale);return res;}}

MathRound修约相关推荐

  1. 有效数字修约,按四舍六入五成双原则

    # 定义函数修约小数位数,按四舍六入五成双的原则 def Little (x,y): # x是要修约的数,y是要保留的小数位数.ABS_x = abs(x) # 取x的绝对值str_x = str(A ...

  2. 小数位数修约,四舍六入五成双

    # 定义函数修约小数位数,按四舍六入五成双的原则 def Little (x,y): # x是要修约的数,y是要保留的小数位数.ABS_x = abs(x) # 取x的绝对值str_x = str(A ...

  3. 数理统计(数值修约、0.5修约、0.2修约、有效数字运算、平均值、中位数、极差、标准差、变异系数)

    一.数值修约: 口诀:四舍六入五考虑,五后非零则进一,五后皆零看奇偶,奇进偶舍不连续. 1.15保留一位小数:1.15=1.2(五后非零 看五前面是奇数还是偶数,1是奇数,所以进1位=1.2) 1.1 ...

  4. 数值修约程序(包括运算过程有效数字保留,Python3实现)

    数值修约程序(包括运算过程有效数字保留,Python3实现) 2022.09更新:考虑到需要用到这个程序的朋友很可能没有计算机基础(这也是我只放在csdn而没有放github的原因),我稍微加了一点注 ...

  5. GB/T 8170-2008 数值修约规则与极限数值的表示和判定

    摘抄自规范 GB/T 8170-2008 数值修约规则与极限数值的表示和判定 3.2进舍规则 1.拟舍弃数字的最左一位数字小于5,则舍去,保留其余各位数字不变: 2.拟舍弃数字的最左一位数字大于5,则 ...

  6. 浮点数修约的法则c语言,IEEE754浮点表示法详解

    前言 IEEE754是IEEE二进制浮点算术标准.这个标准定义了表示浮点数的常规值与非规格化值(denormal number),一些特殊值(infinity)和非数值(NaN), 以及这些数值的浮点 ...

  7. 在VisualBasic6.0中实现0.5数值修约

    今天在编程的过程中,需要实现0.5数值修约,想了很长时间,总算研究出来了! 要求将计算结果进行0.5数值修约,并且保留一位小数.具体实现过程是这样的:首先将需要修约的数值保留两位小数,然后乘以2,保留 ...

  8. 修约函数,四舍六进五单双 的修约规则,给有需要的朋友参考

    首先来一个JAVASCRIPT 版本 JAVASCRIPT版修约函数  1 <!--  2 //################################################# ...

  9. C# 小数位修约(保留小数位有效数位)

    实现代码: /// <summary> /// 小数位修约 -- 四舍六入5成双,至少保留一位有效位(四舍六入五成双) /// 数值0.00512,保留2位,修约为0.005:0.0002 ...

最新文章

  1. Mybatis-plus常用API全套教程,看完没有不懂的
  2. 数字基带传输与码间干扰
  3. mysqlcppconn之ConnectOptionsMap的使用
  4. IDEA同时使用maven和gradle
  5. python的@classmethod和@staticmethod
  6. mysql 里面不等于符号_mysql 不等于 符号写法
  7. 使用MvcContrib的FormHelper
  8. 计算机科技新闻,新浪网_科技时代_计算机_新闻报道
  9. 回归分析beta值的标准_读懂回归分析-SPSS为例(无广告)
  10. Jquery第一章环境的搭建和介绍第一节
  11. Spring使用内存数据库
  12. sql Server 发送邮件 错误类型及原因
  13. mysql lock table阻塞读_MySQL的lock tables和unlock tables的用法【数据库锁表】
  14. mybatis使用generator生成器生成entity,mapper,xml模版类及自己写sql情况处理
  15. leetcode237
  16. 版本管理工具Git使用总结
  17. java中数据库修改语句_java 修改数据库中的数据
  18. Java常用集合排序
  19. Oracle 学习之建表、索引、同义词以及SQL优化
  20. 如何用齿轮法测定光速

热门文章

  1. Python爬虫-爬取豆瓣读书
  2. 台湾--电话正则表达式
  3. IPP库的安装以及源码分析方法
  4. 计算机四级月工资多少,大学教授工资多少一月 薪水是多少
  5. 人人都能读懂的react源码解析(大厂高薪必备)
  6. 极限理论总结01:随机变量的四种收敛、CMT及Slutsky定理
  7. Codingame - C - OnboardingThe Descent
  8. 跟着团子学SAP PS:利用项目统计指标(SKF)提升项目成本核算的精准性
  9. Facemark:使用OpenCV进行面部特征点检测
  10. 网络安全课程设计_网络规划