我正在尝试使用APEX代码问题,我们正在尝试使用。我不断遇到错误;

“ System.MathException:不能表示双'Infinity'作为小数:(系统代码)”

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一起工作,并且“ beta”作为结局。

我们使用Excel和许多其他程序进行计算,但从未遇到这样的问题。由于无法计算(rho / mu) ^ 0.52,因此我们正在以这种方式运行代码,而没有Math.log / exp Trick。是否有解决此问题或另一种方法来计算升高(Rho / Mu) ^ 0.52的方法,这不会给我们带来这个错误?

有帮助吗?

解决方案

我终于得到了这个... Thx。 Mike Chale在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-prepresent-double-double-infinity-aas-a-a-a-decimal-salesforce

再次感谢Mike Chale。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top