如何获取不带分隔符的 BigDecimal 的整数

问题描述 投票:0回答:4

我从 Money-Object 中得到了以下 BigDecimal:BigDecimal 49.99,我需要将其作为 Integer 4999,所以我要求的一切就是去掉分隔符。

我可以将这个 BigDecimal 作为字符串并删除分隔符并将其解析为整数,但我认为这不太漂亮。

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

仅使用此回复 49。

java integer bigdecimal currency
4个回答
3
投票

你需要BigDecimal的方法

movePointRight(int n)

示例

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

输出:

3980275

如果您想使用该号码,只需

bd=bd.movePointRight(bd.scale());


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());

1
投票

如果它是货币并且始终为 2 dp,您可以将其乘以 100。但是,正如 Davio 评论的那样,您的代码应该清楚地说明为什么要这样做。

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


1
投票

无需对

BigDecimal
进行任何数学计算;您可以直接调用
myBigDecimal.unscaledValue()
来获取底层未缩放的
BigInteger

© www.soinside.com 2019 - 2024. All rights reserved.