0

我遇到了我们试图开始工作的顶点代码的问题。我不断收到错误消息;

“System.MathException:不能将双'无穷大'表示为十进制:(系统代码)”

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 的提升,这不会给我们这个错误?

4

1 回答 1

0

我终于得到了这个答案……谢谢。迈克·查尔在 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

再次感谢迈克·查尔。

于 2013-11-22T20:29:12.283 回答