乘以Bigdecimal和int生成错误

时间:2014-06-18 15:22:21

标签: java android int bigdecimal

当我将其存储在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

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

感谢您的时间

2 个答案:

答案 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;