我从Money-Object获得了以下BigDecimal:BigDecimal 49.99,我需要它作为Integer 4999,所以我要求的是摆脱分隔符。
我可以将这个BigDecimal作为String并删除分隔符并将其解析为Integer,但我不认为这很漂亮。
BigDecimal bigPrice = moneyPrice.getValue();
Integer price = bigPrice.intValue();
仅使用此回复49。
答案 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
。