Java 货币的四舍五入双倍值

Java 货币的四舍五入双倍值,java,android,double,bigdecimal,Java,Android,Double,Bigdecimal,在文本视图中显示的值舍入时遇到很多麻烦 我基本上想把它四舍五入到小数点后两位,但现在我得到了一长串不同的数字 我在玩BigDecimal,但到目前为止没有运气 public void calc() { BigDecimal bd = new BigDecimal(subTotal); bd.setScale(2, BigDecimal.ROUND_DOWN); total.setText(String.valueOf(bd)); } 请尝

在文本视图中显示的值舍入时遇到很多麻烦

我基本上想把它四舍五入到小数点后两位,但现在我得到了一长串不同的数字

我在玩BigDecimal,但到目前为止没有运气

public void calc() {
        BigDecimal bd = new BigDecimal(subTotal);
        bd.setScale(2, BigDecimal.ROUND_DOWN);
        total.setText(String.valueOf(bd));
    }

请尝试以下代码:

double roundTwoDecimals(double d) {
    DecimalFormat twoDForm = new DecimalFormat("#.##");
    return Double.valueOf(twoDForm.format(d));
}

下面的内容对我有用

BigDecimal bd = new BigDecimal(subTotal);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
total.setText(String.valueOf(bd));
// Input: 9.888888 -> Output: 9.89
// Input: 9f -> Output: 9.00

这样做很有效,但当我不断添加时,我最终又得到了尾随的零。有什么想法吗?也许你应该在显示之前格式化它!!不要使用浮点值来表示货币!看见