项目场景:
将-1格式化加上两位小数,转换为-1.00问题描述:
线上遇到一个比较奇葩的问题,好几个正式环境和测试环境都没有出现过这个格式化转换的问题(原需求是将-1格式化加上两位小数,转换为-1.00), 此处贴上简易的源码:System.out.println(new BigDecimal(new DecimalFormat("#.00").format(new BigDecimal("-1"))));
原因分析:
排查代码发现没问题,加上日志输出后,值也是正确的,百思不得其解,于是百度了下,大部分是说数据有问题,于是根据网上的本地测试了下,发现错误和线上的不一致,后来发现一篇文章,感谢这位老哥提供的思路:Android关于多语言DecimalFormat 遇到的格式化问题
于是本地终于复现出来,(加了一个空格)。
1、
System.out.println(new BigDecimal(new DecimalFormat("#.00 ").format(new BigDecimal("-1"))));
2、
System.out.println(new BigDecimal(new DecimalFormat("#.00").format(new BigDecimal("-1 "))));