尝试检索不含美分的美元金额时遇到以下错误:
Caused by java.lang.StringIndexOutOfBoundsException length=6; regionStart=0; regionLength=-1
这是代码:
public static String findDollarAmount(@Nullable BigDecimal fullAmount) {
if (fullAmount == null || fullAmount.compareTo(BigDecimal.ZERO) == 0) {
return "0";
}
DecimalFormat df = new DecimalFormat("#,##0.00;-#,##0.00");
//This value is returned as some string value that doesn't contain a '.'
String amountStr = df.format(fullAmount);
//The crash happens on this line
return amountStr.substring(0, amountStr.indexOf('.'));
}
我们无法打印出生产中的值,也无法在测试期间重新创建此业务情景。任何帮助将不胜感激。
最佳答案
它可以是您的应用程序区域设置。
如果应用程序的语言环境以货币表示形式作为小数点分隔符“,”(如PT-BR(R $ 1.000,00))将在执行时引起异常。
另一方面,sample,设置为US Locale.setDefault(Locale.US)的区域设置将具有小数点分隔符“。”像$ 1,000.00一样,没问题。