尝试检索不含美分的美元金额时遇到以下错误:

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一样,没问题。

08-08 01:53