Java 将BigDecimal常量强制转换为int
我有一个常数: 我想在switch语句中使用它,如下所示: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原语数据 类型。它也适用于枚
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