Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将BigDecimal常量强制转换为int_Java_Bigdecimal - Fatal编程技术网

Java 将BigDecimal常量强制转换为int

Java 将BigDecimal常量强制转换为int,java,bigdecimal,Java,Bigdecimal,我有一个常数: 我想在switch语句中使用它,如下所示: int value = key.getCision().intValue(); switch (value) { case PreEtat.IND: //****** break; //**** default: break; } 我的这一行有以下错误:case PreEtat.IND: 错误: 根据: 一个开关可以处理byte、short、char和int原语数据 类型。它也适用于枚

我有一个常数:

我想在switch语句中使用它,如下所示:

int value =  key.getCision().intValue();
switch (value) {
    case PreEtat.IND:
    //******
    break;
    //****
    default:
    break;
}
我的这一行有以下错误:case PreEtat.IND:

错误:

根据:

一个开关可以处理byte、short、char和int原语数据 类型。它也适用于枚举类型中讨论的枚举类型, String类,以及一些包装特定 基本类型:中讨论的字符、字节、短字符和整数 数字和字符串

开关中的case PreEtat.IND引用了一个BigDecimal常量,该常量不会编译

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

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

您可以尝试使用:

将此BigDecimal转换为int。此转换类似于 将原语转换从双精度缩小为短精度,如 Java语言规范:这个BigDecimal的任何小数部分 将被丢弃,并且如果生成的BigInteger太大而无法拟合 在int中,只返回低位32位。请注意 转换可能会丢失有关总体震级和震级的信息 此BigDecimal值的精度以及返回的结果 相反的符号


带小数的Switch-case语句似乎不是一个好主意。你不喜欢使用枚举吗?@ArnaudDenoyelle请举个例子
int value =  key.getCision().intValue();
switch (value) {
    case PreEtat.IND:
    //******
    break;
    //****
    default:
    break;
}
Type mismatch: cannot convert from BigDecimal to int