我遇到的问题是我们正在尝试使用的顶级代码。我一直在收到错误;
“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这不会给我们这个错误?
答案 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可以处理的事情。
我认为不必使用周围的工作来提升权力仍然是好的。
再次感谢Mike Chale。