【问题标题】:Set Scale for Decimals stored in a String Array in an Object为存储在对象中的字符串数组中的小数设置比例
【发布时间】:2012-09-28 12:36:23
【问题描述】:

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

String [] array = "12345.123456789";

我希望它被格式化为12345.1234

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

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

我是java新手,请大家帮忙...

【问题讨论】:

  • 编译器会给这个String [] array = "12345.123456789";一个错误

标签: java arrays object


【解决方案1】:

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();

【讨论】:

  • 如果你将 12345.123456789 舍入一半,你会得到 12345.1235 而不是 12345.1234
  • 谢谢@assylias。现在如何将12345.1235 添加回array
  • @DebajyotiDas 正如上面评论中提到的,您需要使用BigDecimal.ROUND_DOWN 作为舍入模式。要将值放回数组中,只需分配它:array[0] = roundedStr;
【解决方案2】:
       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);

【讨论】:

  • 嗨 Subodh... 现在我如何将这个 12345.1234 添加到 array
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2017-10-06
  • 2020-05-19
  • 1970-01-01
  • 2016-01-23
  • 2017-02-23
相关资源
最近更新 更多