不能将Double'Infinity'表示为Decimal,salesforce

时间:2013-11-06 22:16:19

标签: salesforce apex-code apex

我遇到的问题是我们正在尝试使用的顶级代码。我一直在收到错误;

“System.MathException:不能将Double'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和许多其他程序进行计算,从来没有像这样的问题。我们以这种方式运行我们的代码,因为没有math.log / exp技巧,无法在salesforce中计算(rho / mu)^ 0.52。有没有办法围绕这个或另一种方式计算机提高(rho / mu)^ 0.52这不会给我们这个错误?

1 个答案:

答案 0 :(得分:0)

我终于得到了答案......谢谢。 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-represent-double-infinity-as-a-decimal-salesforce

再次感谢Mike Chale。