public String RH(String T1 ,String R){
Double RH = Double.valueOf(R);
Double T = Double.valueOf(T1);
T = 1.8 * T + 32;
Double HI = 0.5 * (T + 61 + (T - 68) * 1.2 + RH * 0.094);
//如果不小于 80华氏度 则用完整公式重新计算
if (HI >= 80){
HI = -42.379 + 2.04901523 * T + 10.14333127 * RH - 0.22475541 * T * RH
- 0.00683783 * T * T - 0.05481717 * RH * RH + 0.00122874 * T * T * RH
+ 0.00085282 * T * RH * RH - 0.00000199 * T * T * RH * RH;
// HI=-42.379+2.04901523*T+10.14333127*R+0.22475541*T*R+6.83783*10*T*T+5.481717*10*R*R
// +1.22874*10*T*T*R+8.5282*10*T*R*R+1.99*10*T*T*R*R;
if (RH < 13 && T >80 && T < 112){
Double ADJUSTMENT = (13 - RH) / 4 * Math.sqrt((17 - Math.abs(T - 95)) / 17);
HI -= ADJUSTMENT;
}else if( RH > 85 && T > 80 && T < 87){
Double ADJUSTMENT = (RH - 85) * (87 - T) / 50;
HI += ADJUSTMENT;
}
}
//System.out.print(T+"-----"+HI+"----"+(HI - 32) / 1.8);
return Math.round((HI - 32) / 1.8)+"";
}
public String matchFeelsTemperature(String temperature, String VAP, String windspeed, String humidity){
Double AT = 99999.9;
if ("999999".equals(temperature) || "999999".equals(VAP) || "999999".equals(windspeed) || "999999".equals(humidity)){
return AT+"";
}
try {
Double T = Double.valueOf(temperature);
Double e = Double.valueOf(VAP);
Double V = Double.valueOf(windspeed);
Double RH = Double.valueOf(humidity);
Double rou = RH / 100 * 6.105 * Math.pow(e, (17.27*T/(237.7+T)));
AT = 1.07 * T + 0.2 * e - 0.65 * V - 2.7;
}catch(Exception e){
e.printStackTrace();
return AT+"";
}
return Math.round(AT)+"";
}