BigDecimal去除末尾多余的0
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的更多相关文章
- BigDecimal实现末尾去掉无用0
BigDecimal 原生提供了 stripTrailingZeros 方法可以实现去掉末尾的 0,然后使用 toPlainString 可以输出数值,注意这里如果使用 toString() 会变成 ...
- js取整,保留小数位数、四舍五入、科学记数法及去掉数字末尾多余的0
1.向下取整 var num1 = 12.10345; var num2 =12.9801; var newnum1=Math.floor(num1) //结果 12 var newnum2= ...
- (JS,JAVA,MySql)去除小数后多余的0
分别通过JS,JAVA和MySql实现去除小数后多余的0 1. JS方法 /** *去除小数点后多余的0 */ function cutZero(old) { //拷贝一份 返回去掉零的新串 old ...
- Java——去掉小数点后面多余的0
当小数点后位数过多,多余的0没有实际意义,根据业务需求需要去掉多余的0.后端存储浮点型数据一般会用到Bigdecimal 类型,可以调用相关方法去掉小数后多余0,然后转为string. public ...
- mysql 中decimal中去掉后面多余的0
#去除Decimal后面多余的0 #处理前SELECT '0.12000','1.203010','-0.20' #处理后SELECT 0+CAST('0.12000' AS CHAR),0+CAST ...
- js 对小数进行格式化(保留小数,去除小数后的0)
// 如果去零时需要保留位数: (比如 19.520100 --> 19.52) parseFloat(Number(19.520100).toFixed(2)) // 如果只想去除小数点后多余 ...
- Xcode8如何去除控制台多余的打印信息
Xcode8如何去除控制台多余的打印信息 最近刚使用了Xcode8.遇到了一些问题,总结如下.希望对大家有所帮助. 一.如何去除控制台多余的打印信息. 方法:点击Product----Scheme-- ...
- 【代码笔记】iOS-浮点数处理并去掉多余的0
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- nefu 753 n!末尾有多少个0
Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每 ...
随机推荐
- iOS开发-Launch Image和Launch Screen
Launch Image是App的启动图片,LaunchScreen是iOS8之后的功能,两者都可以设置app的启动图片.iOS8之后官方的推荐了使用Launch screen.xib,在xib的中通 ...
- C++两个矩阵相乘
/*编程求两个矩阵相乘的结果.输入第一行是整数m,n,表示第一个矩阵式m行n列的:然后是一个m * n的矩阵.再下一行的输入时整数p,q,表示下一个矩阵p行,q列的(n=p);然后就是一个p行q列的矩 ...
- [javase学习笔记]-6.4 成员变量与局部变量
前面我们学习了类的定义,我们不难理解,定义类事实上就是在定义类中的成员. 成员包含成员变量和成员函数. 说到成员变量,我们非常自然会想到前面提到过的局部变量,那么它们之间有什么差别呢? 首先我们定义一 ...
- 从数据库中取 datetime类型,界面展示 yyyy-MM-dd
//处理提问时间,去掉时分秒 if(array!=null && array.size()>0){ for(int i=0;i<array.size();i++){ JSO ...
- SQL-根据多个条件更新数据
根据多个条件更新数据 UPDATE sphwph SET BKXSHL=t2.BKXSHL FROM sphwph t1,sphwph_170420 t2 --(SELECT a.* FROM dbo ...
- 解决Ubuntu/debian的Apt-get 由于依赖关系安装失败的问题
The following packages have unmet dependencies: libssl-dev: Depends: libssl0.9.8 (= 0.9.8k-7ubuntu8) ...
- 安装QT的时候出现PATH_MAX错误
运行c:\qt\4.5.0的configure文件的时候,出现如下的错误提示: ....\corelib\io\qfsfileengine_win.cpp(1012) : error C2065: ...
- 扩展一个boot的插件—tooltip&做一个基于boot的表达验证
在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...
- 创建mysql数据库并指定编码
xplanner的readme.txt里有句话“XPlanner has only been tested on mysql 4.x, myslq 5.0, Tomcat 5.x, java 1.4, ...
- C#.NET常见问题(FAQ)-如何使用DataGridView跟Excel数据交互
1 从工具箱中拖进来一个DataGridView 2 就像Excel表头,可以添加一个表头(即一列的抬头,比如叫做A) 3 一次添加ABCDE等项目,也可以修改该类目的类型为Button或者C ...