任何人都可以帮助我根据温度计算露点(°C或°F)和相对湿度。我在Google上搜索了很多但没有找到任何合适的公式来计算它。我使用下面的公式,但它给出了华氏温度单位的错误值。
float Temp = [value floatValue];
float Humi = [[data humidity] floatValue];
float Td = Temp - ((100 - Humi)/3.6);
return Td;
我有温度(°C或°F)和湿度,需要帮助公式计算目标C的露点。
答案 0 :(得分:3)
完美无缺
-(float) findDewPointWithHumidity:(float) humi forTemperature:(float) temperature isCelsius: (BOOL) isCelsius isReturnTypeCelcius: (BOOL) isReturnTypeCelcius
{
float temp;
if(isCelsius){
temp = temperature;
} else {
temp = (temperature - 32) / 1.8;
}
float ans = (temp - (14.55 + 0.114 * temp) * (1 - (0.01 * humi)) - pow(((2.5 + 0.007 * temp) * (1 - (0.01 * humi))),3) - (15.9 + 0.117 * temp) * pow((1 - (0.01 * humi)), 14));
if(isReturnTypeCelcius){
return ans;
}
float value = ans*(9.0/5.0);
return value+32.0;
}
答案 1 :(得分:2)
这应该可以胜任。以下代码仅考虑Celsius和Fahrenheit。要使用其他温度单位,请相应地修改代码;
-(float) findDewPointWithHumidity:(float) humidity forTemperature:(float) temperature isCelsius: (BOOL) isCelsius isReturnTypeCelcius: (BOOL) isReturnTypeCelcius
{
float temp;
if(isCelsius){
temp = temperature;
} else {
temp = (temperature - 32) / 1.8;
}
float humi = 34;
float ans = (temp - (14.55 + 0.114 * temp) * (1 - (0.01 * humi)) - pow(((2.5 + 0.007 * temp) * (1 - (0.01 * humi))),3) - (15.9 + 0.117 * temp) * pow((1 - (0.01 * humi)), 14));
if(isReturnTypeCelsius){
return ans; // returns dew Point in Celsius
}
return (temperature - 32) / 1.8; // returns dew Point in Fahrenheit
}