Код: Выделить всё
public static double CalculateWetBulbC(double tempC, double dewPointC, double pressureMb)
{
double svpDP = SaturationVapourPressure1980(dewPointC);
return (((0.00066 * pressureMb) * tempC) + ((4098 * svpDP) / (Sqr(dewPointC + 237.7)) * dewPointC)) / ((0.00066 * pressureMb) + (4098 * svpDP) / (Sqr(dewPointC + 237.7)));
}
Код: Выделить всё
public static double SaturationVapourPressure1980(double tempC)
{
return 6.112 * Math.Exp(17.67 * tempC / (tempC + 243.5));
}
Это же число рассчитывается в JavaScript как:
Код: Выделить всё
(0.00066 * Pressure[i][1] * Temperature[i][1] + 4098 * 6.112 * Math.exp(17.67 * Temperature[i][1] / (243.5 + Temperature[i][1]))
/ Math.pow((Dewpoint[i][1] + 237.7), 2) * Dewpoint[i][1]) / (0.00066 * Pressure[i][1] + 4098 * 6.112
* Math.exp(17.67 * Temperature[i][1] / (243.5 + Temperature[i][1])) / Math.pow((Dewpoint[i][1] + 237.7), 2))
Вы можете увидеть все эти значения на диаграмме здесь:

Вы можете увидеть эти значения отличаются:
- wetbulb_1minwetbulb получено из расчета CumulusMX C# с частотой в одну минуту.
- Natte Bol Temperatuur получено из расчета JavaScript также с минутной частотой.
В различиях между значениями ошибок не обнаружено. уравнения C# и JavaScript.
Откуда такая разница?
Я думаю о том, как среда выполнения C# или JavaScript на самом деле обрабатывают подобные сложные уравнения, но мне хотелось бы знать механизм разницы между этими двумя вычислениями.
Данные для обоих уравнений идентичны, и их можно найти здесь:
- Основные данные находятся в tempdata и pressdata, эти данные используются поминутно в C#, а затем в javascript (отсюда и индексация).
- Результат C# находится в файле «customlogsRecentdata.json».
- В начале JSON может быть разница в минуту или две, но данные отображаются в ту минуту, которую вы хотите.