如何在没有分隔符的情况下获取BigDecimal的Integer

时间:2014-11-27 13:30:38

标签: java integer bigdecimal currency

我从Money-Object获得了以下BigDecimal:BigDecimal 49.99,我需要它作为Integer 4999,所以我要求的是摆脱分隔符。

我可以将这个BigDecimal作为String并删除分隔符并将其解析为Integer,但我不认为这很漂亮。

BigDecimal bigPrice = moneyPrice.getValue();
Integer price = bigPrice.intValue();

仅使用此回复49。

4 个答案:

答案 0 :(得分:2)

您需要以下方法:

movePointRight(int n)

javadoc链接:http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html#movePointRight(int)

示例:

    BigDecimal bd = new BigDecimal("398.0275");
    System.out.println(bd.movePointRight(bd.scale()));

输出:

3980275

如果您想使用该号码,请bd=bd.movePointRight(bd.scale());

答案 1 :(得分:1)

如果是它的货币并且总是为2 dp,你可以将其乘以100.然而,正如Davio评论的那样,你的代码应该清楚你为什么要这样做。

如果你想转换,例如以英镑英镑的价格换算为GB便士(100便士一磅),那么将它乘以100是正确的做法。

答案 2 :(得分:1)

试试这段代码:

BigDecimal db = new BigDecimal("49.99");
// multiply with 10^scale ( in your case 2)
db = db.multiply(new BigDecimal(10).pow( db.scale()));
System.out.println(db.intValue());

答案 3 :(得分:1)

没有必要对BigDecimal进行任何数学运算;您只需致电myBigDecimal.unscaledValue()即可直接获取基础未缩放的BigInteger