当使用最大70和最小59测试此代码时,它返回1.0而不是0.5。我的公式错了吗?同样,第二个if语句也针对这些方向:(公共静态double hdd(int max,int min),它返回一天的HDD。
或最小值为-999(丢失),则返回0.0。如果max

/**
 * Calculate heating degree day.
 * @param max The highest temperature for a given day.
 * @param min The lowest temperature for a given day.
 * @return heating degree day data for this day.
 */
public static double hdd(int max, int min)
{
    double average = (max + min) / 2;
    double hdd = 0.0;

    if (average < 65.0)
    {
        hdd = 65.0 - average;
    }
    else
    {
        hdd = 0.0;
    }

    if(max == -999 || min == -999)
    {
        hdd = 0.0;
    }
    else if (max < min)
    {
       hdd = 0.0;
    }


    return hdd;

最佳答案

您的问题是(max + min) / 2是整数除法,这意味着它会被截断为下面的整数。在这种情况下,(70 + 59) / 2给出64,然后将其存储在double中。但这不会恢复丢失的0.5

除法之前,需要将分子或分母转换为double。用2.0代替2是实现此目的的一种方法。

关于java - Java计算方法返回1.0而不是0.5?做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22927654/

10-11 21:39