Android - 将double转换为Big Decimal的问题

时间:2012-02-05 13:08:45

标签: java android

我正在尝试将用户的输入从EditText转换为Big Decimal。但是,我在做这件事时遇到了问题。我的结果没有转换。例如,计算完成后,数字将为12.345678。调用方法round()后,舍入值仍然相同。难道我做错了什么?我正在处理钱财

.java

            double totalPrice = Double.parseDouble(price.getText().toString());

            int position = spinner.getSelectedItemPosition();
            name = name1.getText().toString();

            if(position == 0)
            {
                totalPrice = totalPrice * 1.07;
                System.out.println(totalPrice);
            }
            else
            {
                totalPrice = (totalPrice * 1.1)*1.07;
                System.out.println(totalPrice);
            }

            round(totalPrice, 2, BigDecimal.ROUND_HALF_UP);

            }

}

public static double round(double unrounded, int precision, int roundingMode)
{
    BigDecimal bd = new BigDecimal(unrounded);
    BigDecimal rounded = bd.setScale(precision, roundingMode);
    return rounded.doubleValue();
}

1 个答案:

答案 0 :(得分:4)

你不是使用 round的结果。你应该至少做:

totalPrice = round(totalPrice, 2, BigDecimal.ROUND_HALF_UP);

但是,您不应该使用double作为货币值。始终使用BigDecimal - 否则由于二进制浮点的工作方式,您可能会发现意外结果。