我在一个存储十进制值的对象中有一个字符串数组。
String [] array = "12345.123456789";
我希望将其格式化为12345.1234
我尝试使用以下内容但导致数字格式异常。
BigDecimal value = new BigDecimal(array.toString()).setScale( 4, BigDecimal.ROUND_HALF_UP );
array = ( Object )value.toString();
我是java的新手,所以任何人都可以帮忙......
答案 0 :(得分:4)
String [] array = "12345.123456789";
不是有效语句 - 无论是String还是数组,因此您需要在以下两个语句中进行选择:
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();
答案 1 :(得分: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);