我想将一个bigdecimal值除以一个整数。我已经舍入了bigdecimal值(如果它是133.333那么舍入值是133)。以下是我的代码片段。
v1 = v1.setScale(0, RoundingMode.HALF_UP);
int temp = BigDecimal.valueOf(v1.longValue()).divide(constant1);
常量的值是12.它显示错误消息
BigDecimal类型中的方法除(BigDecimal)不适用于参数(int)
有人可以帮助我做分工吗?
答案 0 :(得分:4)
更改
.divide(constant1);
到
.divide(new BigDecimal(constant1));
int temp = (int) (Math.round(v1.doubleValue()) / constant1);
...
答案 1 :(得分:0)
您应该按如下方式编写代码:
int temp = BigDecimal.valueOf(v1.longValue())
.divide(BigDecimal.valueOf(constant1)).intValue();
关于BigDecimal和BigInteger的事情是它们主要使用这些类的实例而不是基本类型。操作结果也是这些类的新实例。
另一个评论:我建议使用valueOf
静态方法而不是构造函数,因为通过这样做,您可能有可能避免创建新对象。使用构造函数可以显式创建新对象,在这种情况下根本不需要。