Pregunta

Tengo problemas con un código APEX que estamos tratando de trabajar. Sigo recibiendo el error;

"System.MathException: no puede representar el doble 'infinito' como decimal: (código del sistema)"

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))))))); 

El problema ocurre cuando intentamos calcular la porción Math.log (Rho / Mu) del código. He intentado redondear el resultado de Rho / Mu, definiéndolo como un doble, muchas otras cosas. He intentado establecer la parte de división del problema igual a otra variable y sustituida,

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

con pequeños exitosos. ¿Es este un problema con la forma en que hemos definido nuestras variables como decimales? El Math.log funciona bien con el 9.81 y también con "beta" como el final.

Hacemos los cálculos con Excel y muchos otros programas y nunca tenemos un problema como este. Estamos ejecutando nuestro código de esta manera debido a la incapacidad de calcular (Rho / Mu) ^ 0.52 en Salesforce sin el truco Math.log / Exp. ¿Hay alguna forma de evitar esta u otra forma de la cría de criar (Rho / Mu) ^ 0.52 que no nos daría este error?

¿Fue útil?

Solución

Finalmente obtuve una respuesta a esto ... gracias. Mike Chale en Salesforce.stitexchange.com

Fue un error tonto realmente, el problema final es que debería haber () alrededor de 0.76 * Math.log (9.81) (0.33 * (Math.EXP (0.76 * Math.log (9.81)) * Math.EXP (0.52 * Math.log (rho / mu)) * Representa 9.81^0.76.

El problema final fue que este cálculo parece estar desbordando lo que Apex puede manejar.

Creo que aún sería bueno no tener que usar el trabajo para elevar a los poderes.

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

Gracias Mike Chale de nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top