将BigDecimal Const转换为int

时间:2016-05-24 10:06:45

标签: java bigdecimal

我有const

public static final BigDecimal IND = BigDecimal.valueOf(1);

我想在switch这样的语句中使用它:

int value =  key.getCision().intValue();
switch (value) {
    case PreEtat.IND:
    //******
    break;
    //****
    default:
    break;
}

我对此行有这个错误:case PreEtat.IND:

错误:

Type mismatch: cannot convert from BigDecimal to int

2 个答案:

答案 0 :(得分:2)

您可以尝试使用BigDecimal.intValue()

  

将此BigDecimal转换为int。这种转换类似于a   缩小原始转换从双倍缩短为短   Java语言规范:此BigDecimal的任何小数部分   将被丢弃,如果由此产生的" BigInteger"太大了,不适合   在int中,只返回低位32位。请注意这一点   转换可能会丢失有关整体规模的信息   这个BigDecimal值的精度以及返回结果   相反的标志。

答案 1 :(得分:0)

根据documentation

  

开关使用byte,short,char和int原始数据   类型。它也适用于枚举类型(在枚举类型中讨论),   String类,以及一些特定的包装类   原始类型:字符,字节,短整数和整数(在   数字和字符串)。

case PreEtat.IND中的switch指的是BigDecimal常量,不会编译。

您可能希望通过在int实例上调用intValue来初始化并测试BigDecimal常量。

值得注意的是,您正在丢失数字的小数部分,这使得switch中的条件测试有点奇怪。