2

我在一个存储十进制值的对象中有一个字符串数组。

String [] array = "12345.123456789";

我希望它被格式化为12345.1234

我尝试了以下方法,但导致了数字格式异常。

BigDecimal value = new BigDecimal(array.toString()).setScale( 4, BigDecimal.ROUND_HALF_UP );
array = ( Object )value.toString();

我是java新手,所以任何人都可以帮助...

4

2 回答 2

4

String [] array = "12345.123456789";不是有效语句 - 它是字符串或数组,因此您需要在以下两个语句之间进行选择:

String s = "12345.123456789"; //a string
String[] array = {"12345.123456789"}; //an array

如果您使用第一种形式,您可以将其四舍五入:

BigDecimal rounded = new BigDecimal(s).setScale( 4, BigDecimal.ROUND_HALF_UP );
String roundedStr = rounded.toString();

如果你使用第二种形式,你可以使用这个:

BigDecimal rounded = new BigDecimal(array[0]).setScale( 4, BigDecimal.ROUND_HALF_UP );
String roundedStr = rounded.toString();
于 2012-09-28T12:38:26.023 回答
3
       String [] array = {"12345.123456789"};
        StringBuilder numbers = new StringBuilder();
        for(int i=0;i<array.length;i++)
        {
            BigDecimal digits = new BigDecimal(array[i]).setScale( 4, BigDecimal.ROUND_HALF_UP );
            numbers.append(digits.toString());

        }

        System.out.println(numbers);
于 2012-09-28T12:43:37.537 回答