2013-11-06 1 views
0

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

"System.MathException: Невозможно представить Double 'бесконечность' как Decimal: (код System)"

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/му) часть код. Я пробовал округлять результат rho/mu, определяя его как двойное, многое другое. Я попытался установить часть деления проблемы, равной другие переменный и замещенный,

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

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

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

ответ

0

Наконец-то я получил ответ на этот вопрос ... Thx. Майк Чейл на 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

С уважением, Майк Чейл.