الفرق بين المراجعتين لصفحة: «Ruby/Float»
Khaled-yassin (نقاش | مساهمات) طلا ملخص تعديل |
Khaled-yassin (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 2: | سطر 2: | ||
تمثل كائنات Float أرقامًا حقيقية غير دقيقة باستخدام تمثيل النقطة العائمة المزدوجة الدقة للبنية الأصلية. | تمثل كائنات Float أرقامًا حقيقية غير دقيقة باستخدام تمثيل النقطة العائمة المزدوجة الدقة للبنية الأصلية. | ||
للنقطة العائمة حساب مختلف وهو رقم غير دقيق. لذا يجب معرفة نظامها الخاص. انظر التالي: | |||
docs.sun.com/source/806-3568/ncg_goldberg.html | [[docs.sun.com/source/806-3568/ncg_goldberg.html]] | ||
wiki.github.com/rdp/ruby_tutorials_core/ruby-talk-faq#wiki-floats_imprecise | [[wiki.github.com/rdp/ruby_tutorials_core/ruby-talk-faq#wiki-floats_imprecise]] | ||
en.wikipedia.org/wiki/Floating_point#Accuracy_problems | [[en.wikipedia.org/wiki/Floating_point#Accuracy_problems]] | ||
=== الثوابت === | === الثوابت === | ||
==== <code>DIG</code> ==== | |||
الحد الأدنى لعدد الأرقام العشرية ذات الدلالة في النقطة العائمة المزدوجة الدقة. | الحد الأدنى لعدد الأرقام العشرية ذات الدلالة في النقطة العائمة المزدوجة الدقة. | ||
وعادة ما تكون قيمته الافتراضية 15. | وعادة ما تكون قيمته الافتراضية <code>15</code>. | ||
EPSILON | ==== <code>EPSILON</code> ==== | ||
الفرق بين <code>1</code> و أصغر عدد أكبر من <code>1</code> من نوع النقطة العائمة المزدوجة الدقة. | |||
وعادة ما تكون قيمته الافتراضية <code>2.2204460492503131e-16</code>. | |||
وعادة ما تكون قيمته الافتراضية 2.2204460492503131e-16. | |||
==== <code>INFINITY</code> ==== | |||
تعبير يمثل اللانهاية الموجبة. | تعبير يمثل اللانهاية الموجبة. | ||
MANT_DIG | ==== <code>MANT_DIG</code> ==== | ||
عدد الأرقام الأساسية لنوع البيانات المزدوج (double). | |||
عدد الأرقام الأساسية لنوع البيانات المزدوج double. | |||
وعادة ما تكون قيمته الافتراضية 53. | وعادة ما تكون قيمته الافتراضية <code>53</code>. | ||
==== <code>MAX</code> ==== | |||
أكبر عدد صحيح في النقطة العائمة المزدوجة الدقة. | أكبر عدد صحيح في النقطة العائمة المزدوجة الدقة. | ||
وعادة ما تكون قيمته الافتراضية 1.7976931348623157e+308. | وعادة ما تكون قيمته الافتراضية <code>1.7976931348623157e+308</code>. | ||
MAX_10_EXP | ==== <code>MAX_10_EXP</code> ==== | ||
أكبر أس موجب في النقطة العائمة المزدوجة الدقة حيث تكون <code>10</code> مرفوعة إلى هذا الأس ناقص <code>1</code>. | |||
وعادة ما تكون قيمته الافتراضية <code>308</code>. | |||
وعادة ما تكون قيمته الافتراضية 308. | |||
==== <code>MAX_EXP</code> ==== | |||
أكبر قيمة أس محتملة في النقطة العائمة المزدوجة الدقة. | أكبر قيمة أس محتملة في النقطة العائمة المزدوجة الدقة. | ||
وعادة ما تكون قيمته الافتراضية 1024. | وعادة ما تكون قيمته الافتراضية <code>1024</code>. | ||
==== <code>MIN</code> ==== | |||
أصغر رقم مُعيَّر موجب في النقطة العائمة المزدوجة الدقة. | أصغر رقم مُعيَّر موجب في النقطة العائمة المزدوجة الدقة. | ||
وعادة ما تكون قيمته الافتراضية 2.2250738585072014e-308. | وعادة ما تكون قيمته الافتراضية <code>2.2250738585072014e-308</code>. | ||
أصغر | إذا كانت المنصة تدعم الأرقام غير المُعيَّرة، يكون هناك أرقام بين صفر و <code>Float::MIN</code>. وتعيد <code>0.0.next_float</code> أصغر نقطة عائمة موجبة بما في ذلك الأرقام غير المُعيَّرة. | ||
==== <code>MIN_10_EXP</code> ==== | |||
أصغر أس سالب في النقطة العائمة المزدوجة الدقة حيث تكون <code>10</code> مرفوعة إلى هذا الأس ناقص <code>1</code>. | |||
وعادة ما تكون قيمته الافتراضية <code>-307</code>. | |||
==== <code>MIN_EXP</code> ==== | |||
أصغر قيمة أس محتملة في النقطة العائمة المزدوجة الدقة. | أصغر قيمة أس محتملة في النقطة العائمة المزدوجة الدقة. | ||
وعادة ما تكون قيمته الافتراضية -1021. | وعادة ما تكون قيمته الافتراضية <code>-1021</code>. | ||
==== <code>NAN</code> ==== | |||
تعبير يمثل القيمة "ليست عددًا" (not a number). | تعبير يمثل القيمة "ليست عددًا" (not a number). | ||
RADIX | ==== <code>RADIX</code> ==== | ||
أساس النقطة العائمة، أو عدد الأرقام الفريدة المستخدمة لتمثيل الرقم. | أساس النقطة العائمة، أو عدد الأرقام الفريدة المستخدمة لتمثيل الرقم. | ||
وعادة ما تكون قيمته الافتراضية 2 على معظم الأنظمة، والتي تمثل النظام العشري للأساس 10. | وعادة ما تكون قيمته الافتراضية <code>2</code> على معظم الأنظمة، والتي تمثل النظام العشري للأساس <code>10</code>. | ||
==== <code>ROUNDS</code> ==== | |||
يمثل وضع التقريب لإضافة النقطة العائمة. | يمثل وضع التقريب لإضافة النقطة العائمة. | ||
وعادة ما تكون قيمته الافتراضية | وعادة ما تكون قيمته الافتراضية <code>1</code>، التقريب إلى أقرب عدد. | ||
وتشمل الأوضاع الأخرى: | وتشمل الأوضاع الأخرى: | ||
-1 : مُتعذِّر تحديده. | <code>-1</code> : مُتعذِّر تحديده. | ||
0 : التقريب نحو الصفر. | <code>0</code> : التقريب نحو الصفر. | ||
1 : التقريب إلى أقرب عدد. | <code>1</code> : التقريب إلى أقرب عدد. | ||
2 : التقريب نحو اللانهاية الموجبة. | <code>2</code> : التقريب نحو اللانهاية الموجبة. | ||
3 : التقريب نحو اللانهاية السالبة. | <code>3</code> : التقريب نحو اللانهاية السالبة. | ||
=== توابع المثيل العام === | === توابع المثيل العام === | ||
float | ==== <code>float % other → float</code> ==== | ||
إعادة الوحدة بعد قسمة <code>float</code> على <code>other</code>. | |||
==== <code>float * other → float</code> ==== | |||
إعادة Float جديد والذي يكون هو نتاج حاصل ضرب float و other. | إعادة Float جديد والذي يكون هو نتاج حاصل ضرب float و other. | ||
float ** other → float | ==== <code>float ** other → float</code> ==== | ||
رفع float للأس other | رفع float للأس other | ||
float + other → float | ==== <code>float + other → float</code> ==== | ||
إعادة Float جديد والذي يكون هو نتاج حاصل جمع float و other. | إعادة Float جديد والذي يكون هو نتاج حاصل جمع float و other. | ||
float - other → float | ==== <code>float - other → float</code> ==== | ||
إعادة Float جديد والذي يكون هو الفرق بين float و other. | إعادة Float جديد والذي يكون هو الفرق بين float و other. | ||
-float → float | ==== <code>-float → float</code> ==== | ||
إعادة float بعلامة سالبة | إعادة float بعلامة سالبة | ||
float / other → float | ==== <code>float / other → float</code> ==== | ||
إعادة Float جديد والذي يكون نتاج حاصل قسمة float على other. | إعادة Float جديد والذي يكون نتاج حاصل قسمة float على other. | ||
float < real → true | ==== <code>float < real → true or false</code> ==== | ||
إعادة true إذا كان float أقل من real. | إعادة true إذا كان float أقل من real. | ||
نتيجة NaN < NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد على التنفيذ. | نتيجة NaN < NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد على التنفيذ. | ||
float <= real → true | ==== <code>float <= real → true or false</code> ==== | ||
إعادة true إذا كان float أقل من أو يساوي real. | إعادة true إذا كان float أقل من أو يساوي real. | ||
نتيجة NaN <= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ. | نتيجة NaN <= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ. | ||
==== <code>float <=> real → -1, 0, +1, or nil</code> ==== | |||
إعادة -1، 0 أو +1 اعتمادًا على ما إذا كان float أقل من أو يساوي أو أكبر من real. هذا هو أساس الاختبارات في وحدة Comparable. | إعادة -1، 0 أو +1 اعتمادًا على ما إذا كان float أقل من أو يساوي أو أكبر من real. هذا هو أساس الاختبارات في وحدة Comparable. | ||
سطر 148: | سطر 127: | ||
إعادة nil إذا كانت القيمتين غير صالحتين للمقارنة. | إعادة nil إذا كانت القيمتين غير صالحتين للمقارنة. | ||
float == obj → true | ==== <code>float == obj → true or false</code> ==== | ||
إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج #eql? أن يكون obj من نوع Float. | إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج #eql? أن يكون obj من نوع Float. | ||
نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ. | نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ. | ||
float == obj → true | ==== <code>float == obj → true or false</code> ==== | ||
إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج #eql? أن يكون obj من نوع Float. | إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج #eql? أن يكون obj من نوع Float. | ||
نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ. | نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ. | ||
float > real → true | ==== <code>float > real → true or false</code> ==== | ||
إعادة true إذا كان float أكبر من real. | إعادة true إذا كان float أكبر من real. | ||
نتيجة NaN > NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ. | نتيجة NaN > NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ. | ||
float >= real → true | ==== <code>float >= real → true or false</code> ==== | ||
إعادة true إذا كان float أكبر من أو يساوي real. | إعادة true إذا كان float أكبر من أو يساوي real. | ||
نتيجة NaN >= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ. | نتيجة NaN >= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ. | ||
abs → float | ==== <code>abs → float</code> ==== | ||
إعادة القيمة المطلقة للتابع float. | إعادة القيمة المطلقة للتابع float. | ||
<nowiki>#</nowiki>magnitude اسم مستعار للتابع #abs. | <nowiki>#</nowiki>magnitude اسم مستعار للتابع #abs. | ||
angle → 0 | ==== <code>angle → 0 or float</code> ==== | ||
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك. | إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك. | ||
arg → 0 | ==== <code>arg → 0 or float</code> ==== | ||
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك. | إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك. | ||
ceil([ndigits]) → integer | ==== <code>ceil([ndigits]) → integer or float</code> ==== | ||
إعادة أصغر رقم أكبر من أو يساوي float مع دقة ndigits رقم (القيمة الافتراضية: 0). | إعادة أصغر رقم أكبر من أو يساوي float مع دقة ndigits رقم (القيمة الافتراضية: 0). | ||
سطر 196: | سطر 167: | ||
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة: | يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة: | ||
coerce(numeric) → array | ==== <code>coerce(numeric) → array</code> ==== | ||
إعادة مصفوفة يتمثَّل فيها كلٌ من numeric و float ككائنات Float. | إعادة مصفوفة يتمثَّل فيها كلٌ من numeric و float ككائنات Float. | ||
ويتحقق ذلك عن طريق تحويل numeric إلى Float. | ويتحقق ذلك عن طريق تحويل numeric إلى Float. | ||
denominator → integer | ==== <code>denominator → integer</code> ==== | ||
إعادة المقام (موجب دائمًا). والنتيجة تعتمد على الآلة. | إعادة المقام (موجب دائمًا). والنتيجة تعتمد على الآلة. | ||
انظر أيضا #numerator. | انظر أيضا #numerator. | ||
divmod(numeric) → array | ==== <code>divmod(numeric) → array</code> ==== | ||
راجع Numeric#divmod. | راجع Numeric#divmod. | ||
eql?(obj) → true | ==== <code>eql?(obj) → true or false</code> ==== | ||
إعادة true فقط إذا كانت obj من النوع Float وله نفس قيمة float. علي النقيض من ذلك مع Float#==، الذي يُجري تحويلات على النوع. | إعادة true فقط إذا كانت obj من النوع Float وله نفس قيمة float. علي النقيض من ذلك مع Float#==، الذي يُجري تحويلات على النوع. | ||
نتيجة NaN.eql?(NaN) غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ. | نتيجة NaN.eql?(NaN) غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ. | ||
fdiv(numeric) → float | ==== <code>fdiv(numeric) → float</code> ==== | ||
إعادة float / numeric، مثل Float#/. | إعادة float / numeric، مثل Float#/. | ||
finite? → true | ==== <code>finite? → true or false</code> ==== | ||
إعادة true إذا كان float عدد نقطة عائمة IEEE صالح، أي أنه ليس لا نهائي و #nan? قيمتها false. | إعادة true إذا كان float عدد نقطة عائمة IEEE صالح، أي أنه ليس لا نهائي و #nan? قيمتها false. | ||
floor([ndigits]) → integer | ==== <code>floor([ndigits]) → integer or float</code> ==== | ||
إعادة أكبر رقم أصغر من أو يساوي float مع دقة ndigits رقم عشري (القيمة الافتراضية: 0). | إعادة أكبر رقم أصغر من أو يساوي float مع دقة ndigits رقم عشري (القيمة الافتراضية: 0). | ||
سطر 236: | سطر 200: | ||
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة: | يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة: | ||
hash → integer | ==== <code>hash → integer</code> ==== | ||
إعادة رمز التجزئة لهذا الرقم العشري. | إعادة رمز التجزئة لهذا الرقم العشري. | ||
راجع أيضًا Object#hash. | راجع أيضًا Object#hash. | ||
infinite? → -1 | ==== <code>infinite? → -1, 1, or nil</code> ==== | ||
إعادة nil أو -1، أو 1 اعتمادًا علي ما إذا كانت القيمة محدودة، أو -Infinity، أو +Infinity. | إعادة nil أو -1، أو 1 اعتمادًا علي ما إذا كانت القيمة محدودة، أو -Infinity، أو +Infinity. | ||
inspect() | ==== <code>inspect()</code> ==== | ||
اسم المستعار لـ to_s | اسم المستعار لـ to_s | ||
magnitude → float | ==== <code>magnitude → float</code> ==== | ||
إعادة القيمة المطلقة للتابع float. | إعادة القيمة المطلقة للتابع float. | ||
<nowiki>#</nowiki>magnitude اسم مستعار للتابع #abs. | <nowiki>#</nowiki>magnitude اسم مستعار للتابع #abs. | ||
modulo(other) → float | ==== <code>modulo(other) → float</code> ==== | ||
إعادة الوحدة بعد قسمة float على other. | إعادة الوحدة بعد قسمة float على other. | ||
nan? → true | ==== <code>nan? → true or false</code> ==== | ||
إعادة true إذا كان float عدد نقطة عائمة IEEE غير صالح. | إعادة true إذا كان float عدد نقطة عائمة IEEE غير صالح. | ||
empty? → true | ==== <code>empty? → true or false</code> ==== | ||
إعادة true إذا كان float أقل من 0. | إعادة true إذا كان float أقل من 0. | ||
next_float → float | ==== <code>next_float → float</code> ==== | ||
إعادة عدد النقطة العائمة القابل للتمثيل التالي. | إعادة عدد النقطة العائمة القابل للتمثيل التالي. | ||
سطر 278: | سطر 234: | ||
فعلى سبيل المثال: | فعلى سبيل المثال: | ||
numerator → integer | ==== <code>numerator → integer</code> ==== | ||
إعادة البسط. والنتيجة تعتمد على الآلة. | إعادة البسط. والنتيجة تعتمد على الآلة. | ||
انظر أيضا #denominator. | انظر أيضا #denominator. | ||
phase → 0 | ==== <code>phase → 0 or float</code> ==== | ||
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك. | إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك. | ||
positive? → true | ==== <code>positive? → true or false</code> ==== | ||
إعادة true إذا كان float أكبر من 0. | إعادة true إذا كان float أكبر من 0. | ||
prev_float → float | ==== <code>prev_float → float</code> ==== | ||
إعادة عدد النقطة العائمة القابل للتمثيل السابق. | إعادة عدد النقطة العائمة القابل للتمثيل السابق. | ||
سطر 302: | سطر 254: | ||
فعلى سبيل المثال: | فعلى سبيل المثال: | ||
quo(numeric) → float | ==== <code>quo(numeric) → float</code> ==== | ||
إعادة float / numeric، مثل Float#/. | إعادة float / numeric، مثل Float#/. | ||
rationalize([eps]) → rational | ==== <code>rationalize([eps]) → rational</code> ==== | ||
إعادة تقريب ابسط للقيمة (flt-|eps| <= result <= flt+|eps|). إذا لم يتاح الوسيط الاختياري eps، سيُختار تلقائيًا. | إعادة تقريب ابسط للقيمة (flt-|eps| <= result <= flt+|eps|). إذا لم يتاح الوسيط الاختياري eps، سيُختار تلقائيًا. | ||
انظر أيضا #to_r. | انظر أيضا #to_r. | ||
round([ndigits] [, half: mode]) → integer | ==== <code>round([ndigits] [, half: mode]) → integer or float</code> ==== | ||
إعادة float مُقرَّب إلى أقرب قيمة بدقة أرقام عشرية مقدارها ndigits (القيمة الافتراضية: 0). | إعادة float مُقرَّب إلى أقرب قيمة بدقة أرقام عشرية مقدارها ndigits (القيمة الافتراضية: 0). | ||
سطر 358: | سطر 307: | ||
انظر أيضا #rationalize. | انظر أيضا #rationalize. | ||
to_s → string | ==== <code>to_s → string</code> ==== | ||
إعادة سلسلة تحتوي على تمثيل self. كما هو حال الشكل الثابت أو الأسي لـ float، قد يُعيد الاستدعاء NaN و Infinity و -Infinity. | إعادة سلسلة تحتوي على تمثيل self. كما هو حال الشكل الثابت أو الأسي لـ float، قد يُعيد الاستدعاء NaN و Infinity و -Infinity. | ||
ويُعيَّن له أيضًا الاسم المستعار: inspect | ويُعيَّن له أيضًا الاسم المستعار: inspect | ||
truncate([ndigits]) → integer | ==== <code>truncate([ndigits]) → integer or float</code> ==== | ||
إعادة float مبتورًا (نحو الصفر) إلى دقة أرقام عشرية ndigits (القيمة الافتراضية: 0). | إعادة float مبتورًا (نحو الصفر) إلى دقة أرقام عشرية ndigits (القيمة الافتراضية: 0). | ||
سطر 374: | سطر 321: | ||
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة: | يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة: | ||
zero? → true | ==== <code>zero? → true or false</code> ==== | ||
إعادة true إذا كان float يساوي 0. | إعادة true إذا كان float يساوي 0. | ||
= مصادر = | = مصادر = | ||
صفحة Float في توثيق روبي الرسمي. | * [http://ruby-doc.org/core-2.5.1/Float.html صفحة Float في توثيق روبي الرسمي.] | ||
[[تصنيف:Ruby]] | [[تصنيف:Ruby]] |
مراجعة 15:58، 16 أكتوبر 2018
تمثل كائنات Float أرقامًا حقيقية غير دقيقة باستخدام تمثيل النقطة العائمة المزدوجة الدقة للبنية الأصلية.
للنقطة العائمة حساب مختلف وهو رقم غير دقيق. لذا يجب معرفة نظامها الخاص. انظر التالي:
docs.sun.com/source/806-3568/ncg_goldberg.html
wiki.github.com/rdp/ruby_tutorials_core/ruby-talk-faq#wiki-floats_imprecise
en.wikipedia.org/wiki/Floating_point#Accuracy_problems
الثوابت
DIG
الحد الأدنى لعدد الأرقام العشرية ذات الدلالة في النقطة العائمة المزدوجة الدقة.
وعادة ما تكون قيمته الافتراضية 15
.
EPSILON
الفرق بين 1
و أصغر عدد أكبر من 1
من نوع النقطة العائمة المزدوجة الدقة.
وعادة ما تكون قيمته الافتراضية 2.2204460492503131e-16
.
INFINITY
تعبير يمثل اللانهاية الموجبة.
MANT_DIG
عدد الأرقام الأساسية لنوع البيانات المزدوج (double).
وعادة ما تكون قيمته الافتراضية 53
.
MAX
أكبر عدد صحيح في النقطة العائمة المزدوجة الدقة.
وعادة ما تكون قيمته الافتراضية 1.7976931348623157e+308
.
MAX_10_EXP
أكبر أس موجب في النقطة العائمة المزدوجة الدقة حيث تكون 10
مرفوعة إلى هذا الأس ناقص 1
.
وعادة ما تكون قيمته الافتراضية 308
.
MAX_EXP
أكبر قيمة أس محتملة في النقطة العائمة المزدوجة الدقة.
وعادة ما تكون قيمته الافتراضية 1024
.
MIN
أصغر رقم مُعيَّر موجب في النقطة العائمة المزدوجة الدقة.
وعادة ما تكون قيمته الافتراضية 2.2250738585072014e-308
.
إذا كانت المنصة تدعم الأرقام غير المُعيَّرة، يكون هناك أرقام بين صفر و Float::MIN
. وتعيد 0.0.next_float
أصغر نقطة عائمة موجبة بما في ذلك الأرقام غير المُعيَّرة.
MIN_10_EXP
أصغر أس سالب في النقطة العائمة المزدوجة الدقة حيث تكون 10
مرفوعة إلى هذا الأس ناقص 1
.
وعادة ما تكون قيمته الافتراضية -307
.
MIN_EXP
أصغر قيمة أس محتملة في النقطة العائمة المزدوجة الدقة.
وعادة ما تكون قيمته الافتراضية -1021
.
NAN
تعبير يمثل القيمة "ليست عددًا" (not a number).
RADIX
أساس النقطة العائمة، أو عدد الأرقام الفريدة المستخدمة لتمثيل الرقم.
وعادة ما تكون قيمته الافتراضية 2
على معظم الأنظمة، والتي تمثل النظام العشري للأساس 10
.
ROUNDS
يمثل وضع التقريب لإضافة النقطة العائمة.
وعادة ما تكون قيمته الافتراضية 1
، التقريب إلى أقرب عدد.
وتشمل الأوضاع الأخرى:
-1
: مُتعذِّر تحديده.
0
: التقريب نحو الصفر.
1
: التقريب إلى أقرب عدد.
2
: التقريب نحو اللانهاية الموجبة.
3
: التقريب نحو اللانهاية السالبة.
توابع المثيل العام
float % other → float
إعادة الوحدة بعد قسمة float
على other
.
float * other → float
إعادة Float جديد والذي يكون هو نتاج حاصل ضرب float و other.
float ** other → float
رفع float للأس other
float + other → float
إعادة Float جديد والذي يكون هو نتاج حاصل جمع float و other.
float - other → float
إعادة Float جديد والذي يكون هو الفرق بين float و other.
-float → float
إعادة float بعلامة سالبة
float / other → float
إعادة Float جديد والذي يكون نتاج حاصل قسمة float على other.
float < real → true or false
إعادة true إذا كان float أقل من real.
نتيجة NaN < NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد على التنفيذ.
float <= real → true or false
إعادة true إذا كان float أقل من أو يساوي real.
نتيجة NaN <= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ.
float <=> real → -1, 0, +1, or nil
إعادة -1، 0 أو +1 اعتمادًا على ما إذا كان float أقل من أو يساوي أو أكبر من real. هذا هو أساس الاختبارات في وحدة Comparable.
نتيجة NaN <=> NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
إعادة nil إذا كانت القيمتين غير صالحتين للمقارنة.
float == obj → true or false
إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج #eql? أن يكون obj من نوع Float.
نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
float == obj → true or false
إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج #eql? أن يكون obj من نوع Float.
نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
float > real → true or false
إعادة true إذا كان float أكبر من real.
نتيجة NaN > NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
float >= real → true or false
إعادة true إذا كان float أكبر من أو يساوي real.
نتيجة NaN >= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ.
abs → float
إعادة القيمة المطلقة للتابع float.
#magnitude اسم مستعار للتابع #abs.
angle → 0 or float
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك.
arg → 0 or float
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك.
ceil([ndigits]) → integer or float
إعادة أصغر رقم أكبر من أو يساوي float مع دقة ndigits رقم (القيمة الافتراضية: 0).
عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
coerce(numeric) → array
إعادة مصفوفة يتمثَّل فيها كلٌ من numeric و float ككائنات Float.
ويتحقق ذلك عن طريق تحويل numeric إلى Float.
denominator → integer
إعادة المقام (موجب دائمًا). والنتيجة تعتمد على الآلة.
انظر أيضا #numerator.
divmod(numeric) → array
راجع Numeric#divmod.
eql?(obj) → true or false
إعادة true فقط إذا كانت obj من النوع Float وله نفس قيمة float. علي النقيض من ذلك مع Float#==، الذي يُجري تحويلات على النوع.
نتيجة NaN.eql?(NaN) غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ.
fdiv(numeric) → float
إعادة float / numeric، مثل Float#/.
finite? → true or false
إعادة true إذا كان float عدد نقطة عائمة IEEE صالح، أي أنه ليس لا نهائي و #nan? قيمتها false.
floor([ndigits]) → integer or float
إعادة أكبر رقم أصغر من أو يساوي float مع دقة ndigits رقم عشري (القيمة الافتراضية: 0).
عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
hash → integer
إعادة رمز التجزئة لهذا الرقم العشري.
راجع أيضًا Object#hash.
infinite? → -1, 1, or nil
إعادة nil أو -1، أو 1 اعتمادًا علي ما إذا كانت القيمة محدودة، أو -Infinity، أو +Infinity.
inspect()
اسم المستعار لـ to_s
magnitude → float
إعادة القيمة المطلقة للتابع float.
#magnitude اسم مستعار للتابع #abs.
modulo(other) → float
إعادة الوحدة بعد قسمة float على other.
nan? → true or false
إعادة true إذا كان float عدد نقطة عائمة IEEE غير صالح.
empty? → true or false
إعادة true إذا كان float أقل من 0.
next_float → float
إعادة عدد النقطة العائمة القابل للتمثيل التالي.
Float::MAX.next_float و Float::INFINITY.next_float هما Float::INFINITY.
Float::NAN.next_float هو Float::NAN.
فعلى سبيل المثال:
numerator → integer
إعادة البسط. والنتيجة تعتمد على الآلة.
انظر أيضا #denominator.
phase → 0 or float
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك.
positive? → true or false
إعادة true إذا كان float أكبر من 0.
prev_float → float
إعادة عدد النقطة العائمة القابل للتمثيل السابق.
(-Float::MAX).prev_float و (-Float::INFINITY).prev_float هما -Float::INFINITY.
Float::NAN.prev_float هو Float::NAN.
فعلى سبيل المثال:
quo(numeric) → float
إعادة float / numeric، مثل Float#/.
rationalize([eps]) → rational
إعادة تقريب ابسط للقيمة (flt-|eps| <= result <= flt+|eps|). إذا لم يتاح الوسيط الاختياري eps، سيُختار تلقائيًا.
انظر أيضا #to_r.
round([ndigits] [, half: mode]) → integer or float
إعادة float مُقرَّب إلى أقرب قيمة بدقة أرقام عشرية مقدارها ndigits (القيمة الافتراضية: 0).
عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
إذا أُتيح وسيط الكلمة المفتاحية half الاختياري، ستُقرَّب الأرقام التي تقع في المنتصف بين قيمتين مقرَّبتين ممكنتين وفقًا للوضع mode المُحدَّد الكاسر للعلاقة:
:up أو nil: تقريب النصف بعيدًا عن الصفر (الوضع الافتراضي).
:down: تقريب النصف باتجاه الصفر.
:even: تقريب النصف باتجاه أقرب عدد زوجي.
to_f → self
بما أن float هو بالأصل Float، يُعيد self.
to_i → integer
to_int → integer
إعادة float مبتورًا إلى Integer.
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
to_int هو اسم مستعار لـ to_i.
to_int → integer
إعادة float مبتورًا إلى Integer.
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
to_int هو اسم مستعار لـ to_i.
to_r → rational
إعادة قيمة نسبية.
ملاحظة: 0.3.to_r ليس هي نفسه “0.3”.to_r. وهذا الأخير يعادل "3/10".to_r، ولكن الأول ليس كذلك.
انظر أيضا #rationalize.
to_s → string
إعادة سلسلة تحتوي على تمثيل self. كما هو حال الشكل الثابت أو الأسي لـ float، قد يُعيد الاستدعاء NaN و Infinity و -Infinity.
ويُعيَّن له أيضًا الاسم المستعار: inspect
truncate([ndigits]) → integer or float
إعادة float مبتورًا (نحو الصفر) إلى دقة أرقام عشرية ndigits (القيمة الافتراضية: 0).
عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
zero? → true or false
إعادة true إذا كان float يساوي 0.