乘以Bigdecimal和int生成错误

Siv*_*iva 1 java int android bigdecimal

我有一个值,就像0.0004我存储Integer它时转换成Exponential格式,所以我习惯Bigdecimal将它转换为正常值,如下所示

 Bigdecimal x=BigDecimal.valueOf(0.0004)
Run Code Online (Sandbox Code Playgroud)

现在我想成倍增加,x*100但我得到低于错误.

Error: The operator * is undefined for the argument type(s) BigDecimal, int
Run Code Online (Sandbox Code Playgroud)

因为这个错误,如果我再次使用没有bigdecimal,它将转换为EXponential.

任何人都可以建议我繁殖的方式Bigdecimal and int.

谷歌搜索了很多但找不到正确的解决方案.

谢谢你的时间

Men*_*ena 6

你可以BigDecimal.multiply用来乘以你的BigDecimal.

但是,int值0.0004 * 100将是0,这可能不是你想要的.

最后,您可以BigDecimal通过使用NumberFormat实例和格式化来改变用小数位表示的方式Number.

这是一个例子:

BigDecimal x= BigDecimal.valueOf(0.0004);
BigDecimal y = x.multiply(new BigDecimal("100"));
int z = y.intValue();
System.out.printf("y is %s\tz is %d%n", y, z);
// edit to truncate fractional digits
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
System.out.printf("y (2 fraction digits) is %s", nf.format(y));
Run Code Online (Sandbox Code Playgroud)

产量

y is 0.04000    z is 0
y (2 fraction digits) is 0.04
Run Code Online (Sandbox Code Playgroud)