java - 将 Bigdecimal 和 int 相乘产生错误

标签 java android int bigdecimal

<分区>

当我将其存储在 Integer 中时,我有一个值,如 0.0004,它正在转换为 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 和 int 的方法。

google 了很多,但找不到正确的解决方案。

谢谢你的时间

最佳答案

您可以使用 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 %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

关于java - 将 Bigdecimal 和 int 相乘产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289391/

相关文章:

c++ - 将 std::array<char, 10> 的最后一个字符转换为 int

Java SimpleDateFormat 解析怪事

java - 为膨胀菜单添加自定义图标

java - android使用pcap库

android - 谷歌地图不显示任何内容

android - Parcelable,newArray 是做什么用的?

C++ 帮助将字符串转换为 uint8_t

C++,基于第二个 iter 的 Order map 内容

java - 有没有办法向 Spring 指定一个 bean 应该在初始化时使用然后立即丢弃?

java - 使用代码使用相对布局时出错