it-swarm.dev

ما هو الوقود النووي المشع ونان؟

مجرد سؤال أشعر بالحيرة تجاهه

لذلك كنت العبث مع float('inf') ونوع من التساؤل عن الغرض من استخدامه.

كما لاحظت أنني إذا أضفت -inf + inf أحصل nan هو نفس الصفر أم لا.

أنا مرتبك بشأن استخدامات هاتين القيمتين.

أيضا عندما أفعل nan - inf أنا لا أحصل -inf أتلقى nan أنا متأكد من أن كل شيء بسيط للغاية لكنني عثرت عليهم ولم أكن أعرف ماذا يفعلون.

35
Serial

inf هي اللانهاية - قيمة أكبر من أي قيمة أخرى. -inf بالتالي أصغر من أي قيمة أخرى.

nan تعني "ليس رقم" ، وهذا لا يساوي 0.

على الرغم من أن اللانهاية الإيجابية والسلبية يمكن القول بأنها متماثلة حول 0 ، يمكن قول الشيء نفسه عن أي قيمة n ، وهذا يعني أن نتيجة إضافة العائدتين nan. تمت مناقشة هذه الفكرة في سؤال math.se .

لأن nan ليس (حرفيًا) رقمًا ، لا يمكنك القيام بحساب ، لذلك نتيجة العملية الثانية ليست أيضًا رقم (nan)

45
Volatility

nan تعني "ليس رقمًا" ، وهي قيمة تعويم تحصل عليها إذا أجريت عملية حسابية لا يمكن التعبير عن نتائجها كرقم. أي حسابات تقوم بها باستخدام NaN ستؤدي أيضًا إلى NaN.

inf تعني اللانهاية.

فمثلا:

>>> 2*float("inf")
inf
>>> -2*float("inf")
-inf
>>> float("inf")-float("inf")
nan
4
Tim Pietzcker

قول انت:

عندما أفعل nan - inf أنا لا أحصل -inf أحصل nan

وذلك لأن أي عملية تحتوي على NaN كمعامل ستعود NaN.

مقارنة بـ NaN قد تُرجع نتيجة غير مرتبة.

>>> float('Inf') == float('Inf')
True
>>> float('NaN') == float('NaN')
False
3
devnull

Inf لا نهاية ، إنه رقم "أكبر من جميع الأرقام الأخرى". حاول طرح أي شيء تريده منه ، فهو لا يقل حجمه. كل الأرقام هي < Inf. -Inf مشابه ، لكنه أصغر من كل شيء.

NaN تعني ليس رقمًا. إذا حاولت القيام بحساب لا معنى له فقط ، فستحصل على NaN. Inf - Inf هو أحد هذه الحسابات. عادةً يتم استخدام NaN للإشارة إلى أن بعض البيانات مفقودة.

3
U2EF1

يمكنني استخدام inf/-inf كقيم أولية لإيجاد الحد الأدنى/الحد الأقصى لقيمة القياس. لنفترض أنك تقيس درجة الحرارة باستخدام مستشعر وتريد تتبع درجة الحرارة الدنيا/القصوى. قد يوفر المستشعر درجة حرارة صالحة أو قد ينكسر. شبة الكود:

# initial value of the temperature
t = float('nan')          
# initial value of minimum temperature, so any measured temp. will be smaller
t_min = float('inf')      
# initial value of maximum temperature, so any measured temp. will be bigger
t_max = float('-inf')     
while True:
    # measure temperature, if sensor is broken t is not changed
    t = measure()     
    # find new minimum temperature
    t_min = min(t_min, t) 
    # find new maximum temperature
    t_max = max(t_max, t) 

تعمل الشفرة أعلاه نظرًا لأن inf/-inf/nan صالحة للتشغيل على الحد الأدنى/الحد الأقصى ، لذلك ليست هناك حاجة للتعامل مع الاستثناءات.

0
user3765030