java - 在 Java 中,Double 值被装箱,然后立即取消装箱

标签 java integer double sonarqube

如何避免在代码中使用所有强制转换,以免 Sonar 将我的值装箱/拆箱?

这是我的代码:

Double value = (Double) input.get(0);

int integer = new Double(value).intValue();

Double dec = Math.abs(value - (new Double(integer ).doubleValue()));

我想尽可能避免强制转换,但我不确定我是否可以以这种方式将其装箱。

有什么想法吗?

谢谢。

最佳答案

我不确定 input.get() 返回什么类型,因此我假设第一次强制转换是必要的。您无需在每一行实例化新的 Double 对象,只需调用其方法即可返回所需的正确键入的值。

Double value       = (Double) input.get();
int    integerPart = value.intValue();
double decimalPart = Math.abs(value - integer.doubleValue());

看起来您只是想提取 double 的整数和小数部分,在这种情况下,此代码更清楚地表达了意图:

Double value       = (Double) input.get();
int    integerPart = value.intValue();
double decimalPart = Math.abs(value - Math.floor(value));

关于java - 在 Java 中,Double 值被装箱,然后立即取消装箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884249/

相关文章:

java - 如何为hibernate注释生成的UUID添加前缀?

等待线程的Java列表

python - 生成 3 位数的数字

java - 为什么我的 List<Integer> 中的元素是字符类型?

c - 隐式转换后溢出

JavaFX 从 ChoiceDialog 获取 ComboBox

java - Selenium:setHeadless() 对 ChromeDriver 没有影响

C int打印格式化问题

java - 为java中的每个变量设置区域设置

c - 为什么我们可以对 scanf 和 printf 使用 %d?