لا يمكن أن تمثل "اللانهاية" المزدوجة باعتبارها عشرية ، Salesforce

StackOverflow https://stackoverflow.com/questions/19823972

  •  04-07-2022
  •  | 
  •  

سؤال

أواجه مشكلات مع رمز APEX نحاول العمل. ما زلت أحصل على الخطأ.

"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 وأيضًا مع "بيتا" كألى.

نقوم بالحسابات مع Excel والعديد من البرامج الأخرى وليس لدينا مشكلة مثل هذه. نقوم بتشغيل الكود لدينا بهذه الطريقة بسبب عدم القدرة على حساب (Rho / Mu) ^ 0.52 في Salesforce بدون خدعة Math.log / exp. هل هناك طريقة للتغلب على هذا أو طريقة أخرى لجمع (Rho / Mu) ^ 0.52 والتي لن تعطينا هذا الخطأ؟

هل كانت مفيدة؟

المحلول

حصلت أخيرًا على إجابة على هذا ... شكرا. مايك شيل على 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-nrepresent-double-infinity-as-a-decimal-salesforce

شكرا مايك شيل مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top