Невозможно представить двойную «бесконечность» в виде десятичного числа, отдел продаж

У меня проблемы с кодом вершины, который мы пытаемся заставить работать. Я продолжаю получать сообщение об ошибке;

«System.MathException: невозможно представить двойную« бесконечность »в виде десятичного числа: (системный код)»

decimal rho = 1000;
decimal mu = 0.0019;
beta = 0.0757;
decimal r_b_eq8 =   (0.33 * math.exp(0.76 * math.log(9.81) * math.exp(0.52 * math.log(rho / mu)) * math.exp(1.28 * math.log((math.exp((1/3)*math.log(beta))))))); 

Проблема возникает, когда мы пытаемся вычислить часть кода math.log(rho / mu). Я пробовал округлять результат rho/mu, определяя его как двойной, и многое другое. Я попытался установить часть задачи деления равной другой переменной и заменить,

alpha = rho / mu;
... * math.log(alpha) ... 

с небольшим успехом. Это проблема с тем, как мы определили наши переменные как десятичные числа? Math.log отлично работает с 9.81, а также с «бета» в конце.

Мы делаем расчеты с помощью Excel и многих других программ, и у нас никогда не было такой проблемы. Мы запускаем наш код таким образом из-за невозможности вычислить (rho / mu) ^ 0,52 в Salesforce без трюка math.log/exp. Есть ли способ обойти этот или другой способ компьютерного повышения (ро / мю) ^ 0,52, который не дал бы нам эту ошибку?


person Jordan Klepper    schedule 06.11.2013    source источник


Ответы (1)


Наконец-то я получил ответ на это ... Спасибо. Майк Чейл на сайте salesforce.stackexchange.com

На самом деле это была глупая ошибка, конечная проблема в том, что должно было быть () около 0,76 * math.log(9,81) (0,33 * (math.exp(0,76 * math.log(9,81)) * math.exp(0,52 * math.log(rho / mu)) * Представляет собой 9,81^0,76.

Последняя проблема заключалась в том, что этот расчет, похоже, выходит за пределы возможностей Apex.

Я думаю, что все равно было бы неплохо не использовать обходной путь для возведения в степень.

https://salesforce.stackexchange.com/questions/21112/cannot-represent-double-infinity-as-a-decimal-salesforce

Еще раз спасибо, Майк Чейл.

person Jordan Klepper    schedule 22.11.2013