bigdecimal 转字符串,bigdecimal科学计数法问题

  bigdecimal 转字符串,bigdecimal科学计数法问题

  

目录

大十进制转字符串为科学计数法踩坑场景解决案例演示BigDecimal变科学计数法

 

  

BigDecimal转字符串为科学计数法踩坑

 

  

场景

在开发工程中,在金额方面都会定义小数类型,当然有时候也需要将金额转成字符串。我们可能会很自然的写成金额。toString()方法如:

 

  costbudgetentity。getinittotalamount().toString()//获取初始预算金额的字符串当然当金额过小时,转成字符串,是没有任何问题的,但当金额数值较大时,转成的字符串时科学计数法格式,这往往不是我们想要的格式。

  因此

  costbudgetentity。getinittotalamount().toString()//金额为12000000输出的结果为1.2E 7这种的字符串然后根据这种字符串,无法做一些想要的业务处理

  

解决

查看BigDecimal的应用程序界面后,得知有个toPlainString()方法,此方法的返回类型为字符串,它返回此BigDecimal对象的字符串表示形式,不需要任何指数。

 

  /***返回不带指数字段的此{@code BigDecimal}*的字符串表示形式。对于具有正刻度的值,小数点右边的数字*用于表示刻度。对于具有零或负小数位数的值,*生成结果字符串,就好像该值*被转换为具有零小数位数的数值相等的值,并且如果零小数位数值的所有尾随零*都出现在结果中。**整个字符串以减号字符—— *(TT # 92;u002D/tt)如果未缩放的值小于*零。如果未缩放的值是*零或正数,则没有符号字符作为前缀。**注意,如果将此方法的结果传递给* { @ link plain # BigDecimal(String)字符串构造函数},则只需要*恢复此{@code BigDecimal}的*数值;新{@code BigDecimal}*的表示可能具有不同的比例。特别是,如果这个* {@code BigDecimal}的小数位数是负的,那么由这个方法产生的字符串在由字符串构造函数处理时,其小数位数将为零。**(此方法的行为类似于1.4和早期版本中的{@code toString}*方法。)* * @返回不带指数字段的此{@code BigDecimal}*的字符串表示。* @从1.5开始* @ see # toString()* @ see # toEngineeringString()*/public String toPlainString(){ if(scale==0){ if(int compact!=膨胀){ return long。tostring(int compact);} else { return intval。tostring();} } if(this.scale0) { //无小数点if(signum()==0){ return 0 ;} int尾随零=checkscale非零((-(长)小数位数));StringBuilder buif(int compact!=INFLATED){ buf=new StringBuilder(20个尾随零);buf。append(int compact);} else { String str=intval。tostring();buf=new StringBuilder(str。length()尾随零);buf。append(字符串);} for(int I=0;我裁剪零;I)buf。追加(“0”);返回buf。tostring();} strif字符串(intCompact!=膨胀){ str=long。tostring(数学。ABS(int compact));} else { str=intVal.abs().toString();}返回getValueString(signum()、str、scale);}此时,我们在调试查看:

  costbudgetentity。getinittotalamount().toPlainString() //金额为12000000输出的结果为12000000字符串

  

案例演示

 

  

BigDecimal变科学计数法

阿里技术情报局(技术服务办公室)存储BigDecimal

 

  当BigDecimal数据大于9,999,999时

  后就变成科学计数法了。

  如10,000,000 就变为1.0E7

  接收端应该注意

  也需要用BigDecimal要是使用整数接收,就可能出现异常

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: