如何在java中将数字舍入到两位小数?

时间:2014-02-05 20:48:00

标签: java arrays int double rounding

所以我需要将143.203030之类的双打更改为143.20向上或向下舍入第二位数字(如钱)我的计划是将双数转换成数组然后如果小数点后的第三个数字是5或更大元素将比它更大。我如何访问double的每个int,以及如何将我的int数组转换为双精度数。现在......这显然是一种可怕而无效的方式,这将是一个更好的主意。我会花时间编写代码,但我想解释它并要求更好的方法是同样的事情。好吧,实际上我无法编码,因为我不知道访问双重的每个部分。

3 个答案:

答案 0 :(得分:2)

更好的想法,特别是如果你正在使用钱,就是使用BigDecimal类。它支持各种舍入模式,满足最常见的财务和工程要求。

为了满足您的直接需求,您可以按如下方式使用BigDecimal(尽管最好从您的计划中删除double类型并始终使用BigDecimal):

String[] round(double[] arr) {
  String[] r = new String[arr.length];
  for (int idx = 0; idx < arr.length; ++idx) {
    r[idx] = BigDecimal.valueOf(arr[idx]).setScale(2, RoundingMode.HALF_UP).toString();
  }
}

答案 1 :(得分:1)

试试这个:

public static roundHundredth(double d) {
  return (double)((int)(d*100)+.5)/100;
}

答案 2 :(得分:0)

我同意你不应该使用double存储货币价值(虽然可能适用于较小的金额)。进行这种舍入的一般方法是

double rounded = Math.round(d * 100) / 100.0;