Java有自带的 stripTrailingZeros() 方法用于去除末尾多余的0

 BigDecimal num = new BigDecimal("100.000");
BigDecimal numNoEndZero = num.stripTrailingZeros(); //numNoEndZero :1E+2
System.out.println(numNoEndZero.toString());

按上面的方法输出结果,会显示科学计数法,所以需要处理一下,解决方法:

 String numNoEndZeroStr = new BigDecimal("100.000").stripTrailingZeros().toPlainString();   //numNoEndZeroStr  :100
System.out.println(numNoEndZeroStr);

通过该方法处理BigDecimal类型数据后面的0的方法实现:

/**
* @Title: clearNoUseZeroForBigDecimal
* @Description: 去掉BigDecimal尾部多余的0,通过stripTrailingZeros().toPlainString()实现
* @param num
* @return BigDecimal
*/
public static BigDecimal clearNoUseZeroForBigDecimal(BigDecimal num) {
BigDecimal returnNum = null;
String numStr = num.stripTrailingZeros().toPlainString();
if (numStr.indexOf(".") == -1) {
// 如果num 不含有小数点,使用stripTrailingZeros()处理时,变成了科学计数法
returnNum = new BigDecimal(numStr);
} else {
if (num.compareTo(BigDecimal.ZERO) == 0) {
returnNum = BigDecimal.ZERO;
} else {
returnNum = num.stripTrailingZeros();
}
}
return returnNum;
}

不通过该方法处理BigDecimal类型数据实现

    /**
* @Title: removeAmtLastZero
* @Description: 金额处理,去掉BigDecimal尾部多余的0
* @param num
* @return BigDecimal
*/
public static BigDecimal removeAmtLastZero(BigDecimal num) {
String strNum = num.toString();
if (strNum.indexOf('.') != -1) {
String[] arr = strNum.split("\\.");
String strDecimals = arr[1];
List<String> list = new ArrayList<String>();
boolean isCanAdd = false;
for (int i = strDecimals.length() - 1; i > -1; i--) {
String ss = String.valueOf(strDecimals.charAt(i));
if (!ss.equals("0")) {
isCanAdd = true;// 从最后的字符开始算起,遇到第一个不是0的字符开始都是需要保留的字符
}
if (!ss.equals("0") || isCanAdd) {
list.add(ss);
}
}
StringBuffer strZero = new StringBuffer();
for (int i = list.size() - 1; i > -1; i--) {
strZero.append(list.get(i));
}
strNum = String.format("%s.%s", arr[0], strZero.toString());
} return new BigDecimal(strNum);
}

BigDecimal去除末尾多余的0的更多相关文章

  1. BigDecimal实现末尾去掉无用0

    BigDecimal 原生提供了 stripTrailingZeros 方法可以实现去掉末尾的 0,然后使用 toPlainString 可以输出数值,注意这里如果使用 toString()  会变成 ...

  2. js取整,保留小数位数、四舍五入、科学记数法及去掉数字末尾多余的0

    1.向下取整 var num1 = 12.10345; var num2 =12.9801; var newnum1=Math.floor(num1)     //结果 12 var newnum2= ...

  3. (JS,JAVA,MySql)去除小数后多余的0

    分别通过JS,JAVA和MySql实现去除小数后多余的0 1. JS方法 /** *去除小数点后多余的0 */ function cutZero(old) { //拷贝一份 返回去掉零的新串 old ...

  4. Java——去掉小数点后面多余的0

    当小数点后位数过多,多余的0没有实际意义,根据业务需求需要去掉多余的0.后端存储浮点型数据一般会用到Bigdecimal 类型,可以调用相关方法去掉小数后多余0,然后转为string. public ...

  5. mysql 中decimal中去掉后面多余的0

    #去除Decimal后面多余的0 #处理前SELECT '0.12000','1.203010','-0.20' #处理后SELECT 0+CAST('0.12000' AS CHAR),0+CAST ...

  6. js 对小数进行格式化(保留小数,去除小数后的0)

    // 如果去零时需要保留位数: (比如 19.520100 --> 19.52) parseFloat(Number(19.520100).toFixed(2)) // 如果只想去除小数点后多余 ...

  7. Xcode8如何去除控制台多余的打印信息

    Xcode8如何去除控制台多余的打印信息 最近刚使用了Xcode8.遇到了一些问题,总结如下.希望对大家有所帮助. 一.如何去除控制台多余的打印信息. 方法:点击Product----Scheme-- ...

  8. 【代码笔记】iOS-浮点数处理并去掉多余的0

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  9. nefu 753 n!末尾有多少个0

    Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每 ...

随机推荐

  1. hdu4753 Fishhead’s Little Game 状态压缩,总和一定的博弈

    此题和UVA 10891 Game of Sum 总和一定的博弈,区间dp是一个道理,就是预处理麻烦 这是南京网络赛的一题,一直没做,今天做了,虽然时间有点长,但是1ac,这几乎是南京现场赛的最后一道 ...

  2. Visio中方向键不能移动物件而是滚动画布

    不知怎么的, 我的Visio中按方向键不能移动目标对象, 效果却是移动整个画布. 上网查了一下, 找到了原因. 因为不知怎么的错按了键盘上的Scroll Lock键, 再按一下就好了.     参考资 ...

  3. Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测

    Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测 2017年12月13日 17:39:11 机器之心V 阅读数:5931   近日,Artur Suilin 等人发布了 Kaggl ...

  4. variable_scope和name_scope差别

    先看代码:   #命名空间函数tf.variable_scope()和tf.name_scope()函数区别于使用       import tensorflow as tf       with t ...

  5. IDEA 不能显示项目里的文件结构

    方法一: 关闭IDEA, 然后删除项目文件夹下的.idea文件夹 重新用IDEA工具打开项目 方法二: 菜单:File -> Invalidate Caches / Restart

  6. 五毛党可能要失业了,因为AI水军来了

    当AI已经开始写稿.唱歌.翻译文章.把语音转录为文字的时候,我们其实应该清醒的认识到,五毛党要消亡了. 相信大部分人和小编一样,现在只要出门吃饭,就会打开大众点评搜好吃的,看评分,看网友的评论.一般来 ...

  7. Mybatis特殊值Enum类型转换器-ValuedEnumTypeHandler

    引言 typeHandlers 阅读官方文档 typeHandlers 一节 {:target="_blank"} MyBatis 在预处理语句(PreparedStatement ...

  8. PowerDesigner设计的数据库 ORA-0092

    异常 数据库由Powerdesigner设计,格式为Oracle10g,由Powerdesigner生成的数据库并没报什么异常,使用navicat也能正常操作,而使用PLSQL Developer去出 ...

  9. 获取和设置URL里星号(#)的参数

    示例:http://gzmsg.com/go/news.aspx#page=12 var DF = {}; (function () { var a = function () { var d, e ...

  10. uni-app - 支付(app支付、小程序支付、h5(微信端)支付)

    App支付.小程序支付.h5(微信端)支付 APP支付(内置) appPay.js /** * 5+App支付,仅支持支付宝以及微信支付 * * 支付宝Sdk集成,微信sdk未集成 * * @para ...