当使用最大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/