Вычисление сложного уравнения на C# и JavaScriptC#

Место общения программистов C#
Anonymous
Вычисление сложного уравнения на C# и JavaScript

Сообщение Anonymous »

В метеорологической программе (CumulusMX) значение Температуры по влажному термометру рассчитывается как:

Код: Выделить всё

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)));
}
При использовании svpDP:

Код: Выделить всё

public static double SaturationVapourPressure1980(double tempC)
{
return 6.112 * Math.Exp(17.67 * tempC / (tempC + 243.5));
}
А Sqr(a) — это квадрат аргумента (a*a).
Это же число рассчитывается в 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))
Обратите внимание, что все элементы расчета объединены в одно уравнение. Индекс [1] указывает на значение в массиве JSON, представляющее определенную минуту за последние три дня, поэтому температуру WetBulb можно рассчитать для каждой минуты за последние три дня. Расчеты C# также приведены для каждой минуты за последние три три дня.
Вы можете увидеть все эти значения на диаграмме здесь:
Изображение

Вы можете увидеть эти значения отличаются:
  • wetbulb_1minwetbulb получено из расчета CumulusMX C# с частотой в одну минуту.
  • Natte Bol Temperatuur получено из расчета JavaScript также с минутной частотой.

В различиях между значениями ошибок не обнаружено. уравнения C# и JavaScript.
Откуда такая разница?
Я думаю о том, как среда выполнения C# или JavaScript на самом деле обрабатывают подобные сложные уравнения, но мне хотелось бы знать механизм разницы между этими двумя вычислениями.

Вернуться в «C#»