문제

나는 우리가 일하기 위해 노력하는 Apex 코드에 문제가 있습니다. 나는 계속 오류를 얻는다.

"System.MathException : Double 'Infinity'를 소수점으로 표현할 수 없습니다 : (System Code)"

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과 다른 많은 프로그램으로 계산을 수행하며 이와 같은 문제가 없습니다. 우리는 Math.log / Exp Trick없이 Salesforce에서 컴퓨팅 (Rho / mu) ^ 0.52를 계산할 수 없기 때문에이 코드를 실행하고 있습니다. 이 오류를 줄 수없는 (Rho / mu) ^ 0.52의 올리기를 컴퓨터로 만드는 방법이나 다른 방법에 대한 방법이 있습니까?

도움이 되었습니까?

해결책

나는 마침내 이것에 대한 답을 얻었다 ... thx. Salesforce.stackexchange.com의 Mike Chale

정말 어리석은 실수였습니다. 궁극적 인 문제는 약 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

Mike Chale에게 다시 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top