0

動作させようとしている頂点コードに問題があります。エラーが発生し続けます。

「System.MathException: Double 'Infinity' を Decimal として表すことはできません: (システム コード)」

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 の結果を丸めたり、double として定義したり、他の多くのことを試してみました。問題の除算部分を別の変数に等しく設定して代入してみましたが、

alpha = rho / mu;
... * math.log(alpha) ... 

少しの成功で。これは、変数を小数として定義した方法に問題がありますか? math.log は 9.81 で問題なく動作し、末尾が「ベータ」でも問題ありません。

Excel や他の多くのプログラムで計算を行っていますが、このような問題はありません。math.log/exp トリックなしでは salesforce で (rho / mu) ^ 0.52 を計算できないため、この方法でコードを実行しています。これを回避する方法、または (rho / mu) ^ 0.52 を計算してこのエラーを発生させない別の方法はありますか?

4

1 に答える 1

0

私はついにこれに対する答えを得ました... 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

ありがとうマイク・チェール。

于 2013-11-22T20:29:12.283 に答える