gpt4 book ai didi

java - 装箱值被取消装箱,然后立即重新装箱 - Double

转载 作者:行者123 更新时间:2023-12-02 02:02:58 26 4
gpt4 key购买 nike

我收到以下代码错误:装箱值被取消装箱,然后立即重新装箱

double triggerThresholdValue = triggerThreshold.doubleValue();
triggerThreshold = Double.min(triggerThresholdValue, 1) == 1 ?triggerThresholdValue/100 : triggerThreshold;

最佳答案

我会写这样的代码:

    if (triggerThresholdValue > 1.0) {
triggerThreshold = triggerThresholdValue / 100.0;
}

我相信它是等效的(尚未进行彻底的测试)。对我来说这样更容易理解。可能存在一些带有无穷大、NaN 以及正零和负零的极端情况,但如果这些值没有出现在您的代码中,那么应该没问题。

为什么您收到消息:Java 需要决定三元运算符 结果的类型? :。因此,两个可能的结果表达式(?: 之间的一个以及 : 之后的一个)需要具有相同的类型。在您的代码中,triggerThresholdValue/100 的类型为 double(小 d,原始类型),而 triggerThreshold 的类型为 Double(大写D,对象)。我不知道为什么 Java 选择 double 而不是 Double,但它必须做出选择。因此,如果选择第二个值,Double 首先会转换为 double,即拆箱,然后再次转换为 Double,装箱,因此可以将其分配给 triggerThreshold。它也是从哪里来的。

所以,是的,我相信您在评论中的建议会起作用:

    triggerThreshold = Double.min(triggerThreshold, 1) == 1 
? Double.valueOf(triggerThreshold / 100)
: triggerThreshold;

这会强制两个表达式都具有 Double 类型(对象),从而消除多余的拆箱和重新装箱。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com