当我将其存储在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
。
感谢您的时间
答案 0 :(得分:5)
您可以使用BigDecimal.multiply
乘以BigDecimal
。
但是,0.0004 * 100
的int值将为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));
<强>输出强>
y is 0.04000 z is 0
y (2 fraction digits) is 0.04
答案 1 :(得分:2)
BigDecimal
是对象。他们没有正常的经营者。
而不是像x*10
这样的普通乘法运算符,你需要在BigDecimal中调用方法multiply
:
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;