我有一个像0.0004
的值,当我将其存储在Integer
中时,它将转换为Exponential
格式,所以我使用Bigdecimal
将其转换为正常值,如
Bigdecimal x=BigDecimal.valueOf(0.0004)
现在我试图乘以x*100
,但我得到低于错误。
Error: The operator * is undefined for the argument type(s) BigDecimal, int
因为这个错误,如果我再次使用这个而不使用bigdecimal,它将转换为EXponential
谁能告诉我Bigdecimal and int
乘法的方法?
搜索了很多,但没有找到正确的解决方案。
感谢您的宝贵时间
您可以使用BigDecimal.multiply
乘以BigDecimal
。
但是,0.0004 * 100
的int值将是0
,这可能不是您想要的。
最后,您可以通过使用NumberFormat
实例并格式化Number
来更改BigDecimal
以小数表示的方式。
下面是一个例子:
BigDecimal x= BigDecimal.valueOf(0.0004);
BigDecimal y = x.multiply(new BigDecimal("100"));
int z = y.intValue();
System.out.printf("y is %stz 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));
y is 0.04000 z is 0
y (2 fraction digits) is 0.04
BigDecimal
's是对象。它们没有正常的操作符。
您需要在BigDecimal:
中调用multiply
方法,而不是像x*10
这样的普通乘法运算符。x = x.multiply(new BigDecimal(10));
如果你想把它存储在一个新值中:
BigDecimal n = x.multiply(new BigDecimal(10));
并将其转换为原语:
double d = n.doubleValue();
int i = n.intValue();
然而,如果你试图使用小数,为什么不直接使用双精度:
double x = 0.0004;
double n = x*100;