【问题标题】:Convert BigDecimal to String in Array将 BigDecimal 转换为数组中的字符串
【发布时间】:2014-01-16 13:43:58
【问题描述】:

.toString() 方法确实适用于 BigDecimal,但是当我循环遍历一个数组并使用 array[i] 引用它时,我似乎无法让它工作。这是我的代码,其中 numb 是一个字符串变量:

for (int i = 0; i < b.length; i++) {
    if((b[i].getClass().toString().contains("String") || b[i].getClass().toString().contains("BigDecimal"))&& isNumeric((String)b[i]) && i != b.length-1){ 
        if(!caught){
            caught = true;
            startIndex = i; //where the number starts
            }
            numb+=b[i].toString();

还有错误信息:

 Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

有人能指出我正确的方向吗?

【问题讨论】:

    标签: java arrays string bigdecimal


    【解决方案1】:

    你也可以试试 String.valueOf(b[i]);

    【讨论】:

      【解决方案2】:

      isNumeric((String)b[i])

      把这个改成

      isNumeric(b[i].toString())

      您不能通过强制转换将Object 转换为String

      【讨论】:

        【解决方案3】:

        您不能使用显式转换将BigDecimal 转换为String,仅仅因为BigDecimal 不是String

        这取决于您的 isNumeric 方法是如何实现的*,但您必须这样做:

        isNumeric(b[i].toPlainString())
        

        *因为toString() 在需要指数时可以使用科学记数法。

        【讨论】:

          【解决方案4】:

          错误消息可能是由于这个演员:

          (String)b[i]
          

          替换为

          b[i].toString()
          

          【讨论】:

            【解决方案5】:

            b[i] 可以包含BigInteger 类型。您正在尝试使用显式转换将BigInteger 类型转换为String。使用这种语法是不可能的。相反,如果类型为BigInteger,则可以通过以下方式进行转换:

            BigInteger bigInt = new BigInteger("444");
            String stringVal = bigInt.toString();
            

            【讨论】:

              猜你喜欢
              • 2018-11-29
              • 2022-01-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多