转换为2个小数点

时间:2014-02-27 11:32:09

标签: java double decimal rounding

我这里有一个代码来计算付款率。它的工作原理是某些值会产生大量的小数点。我希望将结果转换为仅2个小数点。我该怎么做呢?以下是附加代码:

            double rateConv=(((new Double(4.4) * transaction.getAmount())/100)+(transaction.getAmount()+new Double(0.30)));     

            System.out.println(rateConv);
            transaction.setCurrencyPsy(rateConv);
            transaction.setUserId(getLoginUserProfile().getUserId());
            transaction.setTransType(WalletConstant.TRANS_DEPOSIT);
            transaction.setIsApproved(false);
            transaction.setCreateDate(new Date());
            transaction.setIsCiTrans(false);
            transDAO.save(transaction,getLoginUserProfile(),getText("email.admin"));
            if(transaction.getDepositType().equals(WalletConstant.DEPOSIT_WIREDTRANSFER)){
                addActionMessage(getText("msg.success.tt"));
            }else{
                addActionMsg(getText("msg.success"));
            }
            transaction = new WalletTransaction();
        } catch (Exception e) {
            e.printStackTrace();
            addActionErr(getText("Error in system.Please contact system's administrator."));
            return ERROR;
        }       
        execute();
        return "paymount";
}

提前致谢

4 个答案:

答案 0 :(得分:3)

使用BigDecimal

BigDecimal bd = new BigDecimal(doubleValue);
bd = bd.setScale(2, RoundingMode.HALF_UP);
return bd.doubleValue();

此处RoundingMode.HALF_UP将向“最近邻居”舍入,除非两个邻居都是等距的,在这种情况下会向上舍入。

答案 1 :(得分:1)

有很多方法可以满足您的要求

1

         double d = 1.234567;            
         DecimalFormat df = new DecimalFormat("#.##");
         System.out.print(df.format(d));

2

        double d = 1.234567;
        System.out.printf("%1$.2f", d);

但是 无论如何,我永远不会使用双倍的货币值,我建议你去看看在BigDecimals

编辑:如果您想将Double转换为Big Decimal,请查看@ Zeeshan的答案。

,但 最好只使用Big Decimal作为货币价值,那么转换后你永远不会有任何舍入问题。

答案 2 :(得分:0)

使用DecimalFormat

DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(rateConv));

答案 3 :(得分:0)

试试这样:

double amount = 123;
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(amount));