الفرق بين المراجعتين لصفحة: «Ruby/Float»

من موسوعة حسوب
طلا ملخص تعديل
مراجعة وتدقيق.
 
(9 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الأعداد العشرية Float في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: الصنف <code>Float</code> في روبي}}</noinclude>
تمثل كائنات Float أرقامًا حقيقية غير دقيقة باستخدام تمثيل النقطة العائمة المزدوجة الدقة للبنية الأصلية.
تمثِّل كائنات الصنف <code>Float</code> أعدادًا حقيقيةً غير دقيقة (inexact real numbers) باستخدام التمثيل العشري ذي الدقة المضاعفة للبنية الأصلية.


النقطة العائمة لها حساب مختلف وهو رقم غير دقيق. لذا يجب معرفة نظامها الخاص. انظر التالي:
للمنازل العشرية حساب مختلف وهو عدد غير دقيق، لذا يجب معرفة نظامها الخاص. نقترخ عليك الاطلاع على الصفحات التالية:


docs.sun.com/source/806-3568/ncg_goldberg.html
* [https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html ما هي الأشياء التي يجب أن يعرفها كل عالم حاسوب عن الأعداد العشرية].


wiki.github.com/rdp/ruby_tutorials_core/ruby-talk-faq#wiki-floats_imprecise
* [https://github.com/rdp/ruby_tutorials_core/wiki/ruby-talk-faq#floats_imprecise لماذا الأعداد العشرية في روبي غير دقيقة؟]


en.wikipedia.org/wiki/Floating_point#Accuracy_problems
* [[wikipedia:Floating-point_arithmetic#Accuracy_problems|مشاكل في الدقة]].
 
==الثوابت==
=== الثوابت ===
===<code>DIG</code>===
DIG
الحد الأدنى لعدد الأرقام العشرية ذات الدلالة في المنازل العشرية المزدوجة الدقة. وعادةً ما تكون قيمته الافتراضية <code>15</code>.
 
===<code>EPSILON</code>===
الحد الأدنى لعدد الأرقام العشرية ذات الدلالة في النقطة العائمة المزدوجة الدقة.
الفرق بين <code>1</code> و أصغر عدد عشري ذي دقة مضاعفة أكبر من <code>1</code> من نوع النقطة العائمة المزدوجة الدقة. وعادة ما تكون قيمته الافتراضية هي <code>2.2204460492503131e-16</code>.
 
===<code>INFINITY</code>===
وعادة ما تكون قيمته الافتراضية 15.
يمثل اللانهاية الموجبة.
 
===<code>MANT_DIG</code>===
EPSILON
عدد الأرقام الأساسية للأعداد العشرية المضاعفة (أي البيانات ذات النوع double). وعادةً ما تكون قيمته الافتراضية هي <code>53</code>.
 
===<code>MAX</code>===
الفرق بين 1 و أصغر عدد أكبر من 1 من نوع النقطة العائمة المزدوجة الدقة.
أكبر عدد صحيح في العدد العشري ذي الدقة المضاعفة. وعادةً ما تكون قيمته الافتراضية <code>1.7976931348623157e+308</code>.
 
===<code>MAX_10_EXP</code>===
وعادة ما تكون قيمته الافتراضية 2.2204460492503131e-16.
أكبر أس موجب في العدد العشري ذي الدقة المضاعفة حيث تكون القيمة <code>10</code> مرفوعة إلى هذا الأس بعد طرح القيمة <code>1</code> منها. وعادةً ما تكون قيمته الافتراضية هي <code>308</code>.
 
===<code>MAX_EXP</code>===
INFINITY
أكبر قيمة أس محتملة في العدد العشري ذي الدقة المضاعفة. وعادةً ما تكون قيمته الافتراضية هي <code>1024</code>.
 
===<code>MIN</code>===
تعبير يمثل اللانهاية الموجبة.
أصغر رقم طبيعي ([[wikipedia:Normalized_number|normalized number]]) موجب في العدد العشري ذي الدقة المضاعفة. وعادة ما تكون قيمته الافتراضية <code>2.2250738585072014e-308</code>.
 
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


إذا كانت المنصة تدعم الأعداد غير الطبيعية ([[wikipedia:Denormal_number|denormalized numbers]])، فسيكون هناك أرقام بين الصفر والقيمة <code>Float::MIN</code>. وتعيد <code>‎0.0.next_float</code> أصغر عدد عشري موجب بما في ذلك الأعداد غير الطبيعية ([[wikipedia:Denormal_number|denormalized numbers]]).
===<code>MIN_10_EXP</code>===
أصغر أس سالب في العدد العشري ذي الدقة المضاعفة إذ تكون <code>10</code> مرفوعة إلى هذا الأس ناقص <code>1</code>. وعادةً ما تكون قيمته الافتراضية <code>‎-307</code>.
===<code>MIN_EXP</code>===
أصغر قيمة أس محتملة في العدد العشري ذي الدقة المضاعفة. وعادةً ما تكون قيمته الافتراضية <code>‎-1021</code>.
===<code>NAN</code>===
تعبير يمثل القيمة "ليست عددًا" (not a number).
تعبير يمثل القيمة "ليست عددًا" (not a number).
 
===<code>RADIX</code>===
RADIX
أساس العدد العشري، أو عدد الأرقام الفريدة المستخدمة لتمثيل العدد. وعادةً ما تكون قيمته الافتراضية <code>2</code> على معظم الأنظمة، والتي تمثل النظام العشري ذي الأساس <code>10</code>.
 
===<code>ROUNDS</code>===
أساس النقطة العائمة، أو عدد الأرقام الفريدة المستخدمة لتمثيل الرقم.
يمثل وضع التقريب لإضافة المنازل العشرية. وعادةً ما تكون قيمته الافتراضية <code>1</code>، التقريب إلى أقرب عدد.
 
وعادة ما تكون قيمته الافتراضية 2 على معظم الأنظمة، والتي تمثل النظام العشري للأساس 10.
 
ROUNDS
 
يمثل وضع التقريب لإضافة النقطة العائمة.
 
وعادة ما تكون قيمته الافتراضية التقريب إلى أقرب عدد.


وتشمل الأوضاع الأخرى:
وتشمل الأوضاع الأخرى:
* ‎<code>-1</code>: مُتعذِّر تحديده.


‎-1 : مُتعذِّر تحديده.
* <code>0</code>: التقريب نحو الصفر.
 
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 أو false
 
إعادة true إذا كان float أقل من real.
 
نتيجة NaN < NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد على التنفيذ.
 
float <= real → true أو false
 
إعادة true إذا كان float أقل من أو يساوي real.
 
نتيجة NaN <= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ.
 
‎float <=> real → ‎-1، 0، +1، أو nil‎
 
إعادة ‎-1، 0 أو ‎+1 اعتمادًا على ما إذا كان float أقل من أو يساوي أو أكبر من real. هذا هو أساس الاختبارات في وحدة Comparable.
 
نتيجة NaN <=> NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
 
إعادة nil إذا كانت القيمتين غير صالحتين للمقارنة.
 
float == obj → true أو false
 
إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج ‎#eql?‎ أن يكون obj من نوع Float.
 
نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
 
float == obj → true أو false
 
إعادة true فقط إذا كانت قيمة obj نفس قيمة float. علي عكس ذلك تحتاج ‎#eql?‎ أن يكون obj من نوع Float.
 
نتيجة NaN == NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
 
float > real → true أو false
 
إعادة true إذا كان float أكبر من real.
 
نتيجة NaN > NaN غير مُعرَّفة، لذا تُعاد قيمة تعتمد علي التنفيذ.
 
float >= real → true أو false
 
إعادة true إذا كان float أكبر من أو يساوي real.
 
نتيجة NaN >= NaN غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ.
 
abs → float
 
إعادة القيمة المطلقة للتابع float.
 
<nowiki>#</nowiki>magnitude اسم مستعار للتابع ‎#abs.
 
angle → 0 أو float
 
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك.
 
arg → 0 أو float
 
إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك.
 
ceil([ndigits]) → integer أو 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 أو false
 
إعادة true فقط إذا كانت obj من النوع Float وله نفس قيمة float. علي النقيض من ذلك مع Float#==‎، الذي يُجري تحويلات على النوع.
 
نتيجة NaN.eql?(NaN)‎ غير معرفة، لذا تُعاد قيمة تعتمد على التنفيذ.
 
fdiv(numeric) → float
 
إعادة float / numeric، مثل Float#/‎.
 
finite? → true أو false
 
إعادة true إذا كان float عدد نقطة عائمة IEEE صالح، أي أنه ليس لا نهائي و ‎#nan?‎ قيمتها false.
 
floor([ndigits]) → integer أو float
 
إعادة أكبر رقم أصغر من أو يساوي float مع دقة ndigits رقم عشري (القيمة الافتراضية: 0).
 
عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
 
إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
 
يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
 
hash → integer
 
إعادة رمز التجزئة لهذا الرقم العشري.
 
راجع أيضًا Object#hash.
 
infinite? → -1 أو 1، أو nil
 
إعادة nil أو ‎-1، أو 1 اعتمادًا علي ما إذا كانت القيمة محدودة، أو ‎-Infinity، أو ‎+Infinity.
 
inspect()
 
اسم المستعار لـ to_s
 
magnitude → float
 
إعادة القيمة المطلقة للتابع float.
 
<nowiki>#</nowiki>magnitude اسم مستعار للتابع ‎#abs.
 
modulo(other) → float
 
إعادة الوحدة بعد قسمة float على other.
 
nan? → true أو false
 
إعادة true إذا كان float عدد نقطة عائمة IEEE غير صالح.
 
empty? → true أو 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


إعادة البسط. والنتيجة تعتمد على الآلة.
* <code>1</code>: التقريب إلى أقرب عدد.


انظر أيضا ‎#denominator.
* <code>2</code>: التقريب نحو اللانهاية الموجبة.


phase → 0 أو float
* <code>3</code>: التقريب نحو اللانهاية السالبة.


إعادة 0 إذا كانت القيمة موجبة، أو "ط (pi)" خلاف ذلك.
=توابع النسخة العامة=
===<code>[[Ruby/Float/mod|%]]</code>===
يعيد باقي عملية قسمة عدد عشري على عدد آخر.


positive? → true أو false
===<code>[[Ruby/Float/multiplication|*]]</code>===
يعيد ناتج عملية ضرب عدد عشري بعدد آخر.


إعادة true إذا كان float أكبر من 0.
===<code>[[Ruby/Float/expo|**]]</code>===
يعيد ناتج عملية رفع عدد عشري (الأساس) إلى قوة عدد محدد (الأس).


prev_float → float
===<code>[[Ruby/Float/plus|+]]</code>===
يعيد ناتج عملية الجمع بين عددين.


إعادة عدد النقطة العائمة القابل للتمثيل السابق.
===<code>[[Ruby/Float/minus|-]]</code>===
يعيد ناتج عملية الطرح بين عددين.


(-Float::MAX).prev_float و ‎(-Float::INFINITY).prev_float هما ‎-Float::INFINITY.
===<code>[[Ruby/Float/negation|-]]</code>===
إن استُعمِل هذا المعامل بالشكل <code>‎-Float</code>، فسيعيد القيمة المعاكسة للعدد <code>Float</code> العشري (أي القيمة السالبة إن كان <code>Float</code> موجبًا أو العكس بالعكس).


Float::NAN.prev_float هو Float::NAN.
===<code>[[Ruby/Float/division|/]]</code>===
يعيد ناتج عملية القسمة بين عدد عشري وعدد آخر.


فعلى سبيل المثال:
===<code>[[Ruby/Float/lt|>]]</code>===
يعيد القيمة <code>true</code> إن كانت قيمة العدد العشري الواقع على يساره أصغر من قيمة العدد المواقع على يمينه.


quo(numeric) → float
===<code>[[Ruby/Float/le|=>]]</code>===
يعيد القيمة <code>true</code> إن كانت قيمة العدد العشري الواقع على يساره أصغر من أو تساوي قيمة العدد الواقع على يمينه.


إعادة float / numeric، مثل Float#/‎.
===<code>[[Ruby/Float/comparison|<=>]]</code>===
يعيد عددً‎ا صحيحًا (‎-1 أو 0 أو +1) إذا كان العدد العشري الواقع على يساره أصغر من أو يساوي أو أكبر من العدد الآخر الواقع على يمينه على التوالي.


rationalize([eps]) → rational
===<code>[[Ruby/Float/equal|==]]</code>===
يعيد القيمة <code>true</code> إن كان العدد العشري الواقع على يساره يساوي القيمة الواقعة على يمينه. 


إعادة تقريب ابسط للقيمة (flt-|eps| <= result <= flt+|eps|). إذا لم يتاح الوسيط الاختياري eps، سيُختار تلقائيًا.
===<code>[[Ruby/Float/gt|<]]</code>===
يعيد القيمة <code>true</code> إن كانت قيمة العدد العشري الواقع على يساره أكبر من قيمة العدد الآخر الواقع على يمينه.


انظر أيضا ‎#to_r.
===<code>[[Ruby/Float/ge|=<]]</code>===
يعيد القيمة <code>true</code> إن كانت قيمة العدد العشري الواقع على يساره أكبر من أو تساوي قيمة العدد الآخر الواقع على يمينه.


round([ndigits] [, half: mode]) → integer أو float
===<code>[[Ruby/Float/abs|abs]]</code>===
يعيد القيمة المطلقة للعدد العشري الذي استُدعي معه.


إعادة float مُقرَّب إلى أقرب قيمة بدقة أرقام عشرية مقدارها ndigits (القيمة الافتراضية: 0).
===<code>[[Ruby/Float/angle|angle]]</code>===
يعيد القيمة <code>0</code> إن كان العدد العشري الذي استُدعي معه موجبًا، أو القيمة <code>[[Ruby/Math/PI|pi]]</code> خلاف ذلك.


عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
===<code>[[Ruby/Float/arg|arg]]</code>===
يعيد القيمة <code>0</code> إن كان العدد العشري الذي استُدعي معه موجبًا، أو القيمة <code>[[Ruby/Math/PI|pi]]</code> خلاف ذلك.


إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
===<code>[[Ruby/Float/ceil|ceil]]</code>===
يعيد أصغر عدد من الأعداد الأكبر من أو تساوي العدد العشري الذي استُدعي معه وبدقة محدَّدة.


إذا أُتيح وسيط الكلمة المفتاحية half الاختياري، ستُقرَّب الأرقام التي تقع في المنتصف بين قيمتين مقرَّبتين ممكنتين وفقًا للوضع mode المُحدَّد الكاسر للعلاقة:
===<code>[[Ruby/Float/coerce|coerce]]</code>===
يحول العدد المستدعى معها والعدد العشري المُمرَّر إليها إلى النوع <code>[[Ruby/Float|Float]]</code> ويعيدهما في مصفوفة.


‎:up أو nil: تقريب النصف بعيدًا عن الصفر (الوضع الافتراضي).
===<code>[[Ruby/Float/denominator|denominator]]</code>===
يعيد المقام (denominator) للعدد الكسري الذي استدعي معه، ويكون دائمًا موجبًا.


‎:down: تقريب النصف باتجاه الصفر.
===<code>[[Ruby/Float/divmod|divmod]]</code>===
يعيد مصفوفة تحتوي على حاصل (quotient) وباقي قسمة العدد الذي استُدعي معه على العدد المُمرَّر إليه.


:even: تقريب النصف باتجاه أقرب عدد زوجي.
===<code>[[Ruby/Float/eql-3F|eql?]]</code>===
يتحقق إن كان العدد الذي استُدعي معه والعدد المُمرَّر إليه من نفس النوع (أي كلاهما عدد عشري) ومتساويين في القيمة.


to_f → self
===<code>[[Ruby/Float/fdiv|fdiv]]</code>===
يجري عملية القسمة بين العدد الذي استدعي معه والعدد الذي مُرِّر إليه ثم يعيد الناتج في عدد <nowiki/>[[Ruby/Float|عشري]].


بما أن float هو بالأصل Float، يُعيد self.
===<code>[[Ruby/Float/finite-3F|finite?‎]]</code>===
يتحقق إذا كان العدد العشري الذي استدعي معه عددًا عشريًّا صالحًا وفقًا لمعيار IEEE؛ أي أنه ليس عددٌ لا نهائي ويعيد التابع ‎<code>nan?‎</code> القيمة <code>false</code> معه.


to_i → integer
===<code>[[Ruby/Float/floor|floor]]</code>===
يعيد أكبر عدد من الأعداد الأصغر من أو تساوي العدد العشري الذي استُدعي معه وبدقة محدَّدة.


to_int → integer
===<code>[[Ruby/Float/hash|hash]]</code>===
يعيد القيمة hash للعدد العشري الذي استدعي معه.


إعادة float مبتورًا إلى Integer.
===<code>[[Ruby/Float/infinite-3F|infinite?‎]]</code>===
يتحقق إذا ما إن كان العدد الذي استدعي معه منتهيًا (finite) أو غير منتهي من الطرف السالب (‎<code>-Infinity</code>) أو غير منتهي من الطرف الموجب (‎<code>+Infinity</code>).


يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
===<code>[[Ruby/Float/inspect|inspect]]</code>===
هو اسم بديل للتابع <code>to_s</code>.


to_int هو اسم مستعار لـ to_i.
===<code>[[Ruby/Float/magnitude|magnitude]]</code>===
يعيد القيمة المطلقة للعدد العشري الذي استُدعي معه.


to_int → integer
===<code>[[Ruby/Float/modulo|modulo]]</code>===
يعيد باقي عملية قسمة العدد العشري الذي استُدعي معه على العدد المُعطى.


إعادة float مبتورًا إلى Integer.
===<code>[[Ruby/Float/nan-3F|nan?‎]]</code>===
يتحقق إذا كان العدد العشري الذي استدعي معه عددًا عشريًّا غير صالح وفقًا لمعيار IEEE.


يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
===<code>[[Ruby/Float/negative-3F|negative?‎]]</code>===
يتحقق إن كان العدد العشري الذي استُدعي معه عددًا سالبًا.


to_int هو اسم مستعار لـ to_i.
===<code>[[Ruby/Float/next_float|next_float]]</code>===
يعيد العدد العشري الذي يلي العدد العشري الذي استُدعي معه.


to_r → rational
===<code>[[Ruby/Float/numerator|numerator]]</code>===
يعيد البسط للعد الكسري الذي استدعي معه.


إعادة قيمة نسبية.
===<code>[[Ruby/Float/phase|phase]]</code>===
يعيد القيمة <code>0</code> إن كان العدد العشري الذي استُدعي معه موجبًا، أو يعيد القيمة <code>[[Ruby/Math/PI|pi]]</code>خلاف ذلك.


ملاحظة: ‎0.3.to_r ليس هي نفسه ‎“0.3”.to_r. وهذا الأخير يعادل "3/10".to_r، ولكن الأول ليس كذلك.
===<code>[[Ruby/Float/positive-3F|positive?]]</code>===
يتحقق إن كان العدد العشري الذي استُدعي معه عددًا موجبًا.


انظر أيضا ‎#rationalize.
===<code>[[Ruby/Float/prev_float|prev_float]]</code>===
يعيد العدد العشري الذي يسبق العدد العشري الذي استُدعي معه.


to_s → string
===<code>[[Ruby/Float/quo|quo]]</code>===
يعيد ناتج قسم العدد العشري المستدعى معه على العدد العشري المُمرَّر إليه.


إعادة سلسلة تحتوي على تمثيل self. كما هو حال الشكل الثابت أو الأسي لـ float، قد يُعيد الاستدعاء NaN و Infinity و -Infinity.
===<code>[[Ruby/Float/rationalize|rationalize]]</code>===
يعيد قيمة تقريبة بسيطة (<code>flt-|eps| <= result <= flt+|eps|</code>) للعدد العشري الذي استدعي معه.


ويُعيَّن له أيضًا الاسم المستعار: inspect
===<code>[[Ruby/Float/round|round]]</code>===
يقرِّب العدد الذي استُدعي معه إلى أقرب قيمة بدقة محدَّدة.


truncate([ndigits]) → integer أو float
===<code>[[Ruby/Float/to_f|to_f]]</code>===
يعيد العدد العشري الذي استدعي معه نفسه.


إعادة float مبتورًا (نحو الصفر) إلى دقة أرقام عشرية ndigits (القيمة الافتراضية: 0).
===<code>[[Ruby/Float/to_i|to_i]]</code>===
يحول العدد العشري الذي استُدعي معه إلى <nowiki/>[[Ruby/Integer|عدد صحيح]].


عندما تكون الدقة سالبة، تكون القيمة المُعادة عدد صحيح متبوعًا بعدد أصفار مقداره ndigits.abs على الأقل.
===<code>[[Ruby/Float/to_int|to_int]]</code>===
يحول العدد العشري الذي استُدعي معه إلى <nowiki/>[[Ruby/Integer|عدد صحيح]].


إعادة رقم نقطة عائمة عندما يكون ndigits موجبًا، وإلا يُعاد عددٌ صحيحٌ.
===<code>[[Ruby/Float/to_r|to_r]]</code>===
يحول العدد العشري الذي استُدعي معه إلى <nowiki/>[[Ruby/Rational|عدد جذري]] (rational).


يُلاحظ أن الدقة المحدودة للنقطة العائمة الحسابية قد تؤدي إلى نتائج مُدهشة:
===<code>[[Ruby/Float/to_s|to_s]]</code>===
يحول العدد العشري الذي استدعي معه إلى سلسلة نصية.


zero? → true أو false
===<code>[[Ruby/Float/truncate|truncate]]</code>===
يعيد العدد العشري الذي استُدعي معه بعد اقتطاعه إلى دقة (precision) محدَّدة.


إعادة true إذا كان float يساوي 0.
===<code>[[Ruby/Float/zero-3F|zero?‎]]</code>===
يتحقق إن كانت قيمة العدد العشري الذي استُدعي معه تساوي الصفر.


= مصادر =
== مصادر ==
صفحة Float في توثيق روبي الرسمي.
* <span> </span>[http://ruby-doc.org/core-2.5.1/Float.html صفحة الصنف Float في توثيق روبي الرسمي.]
[[تصنيف:Ruby]]
[[تصنيف:Ruby]]
[[تصنيف:Ruby Class]]
[[تصنيف:Ruby Float]]

المراجعة الحالية بتاريخ 11:19، 24 نوفمبر 2018

تمثِّل كائنات الصنف Float أعدادًا حقيقيةً غير دقيقة (inexact real numbers) باستخدام التمثيل العشري ذي الدقة المضاعفة للبنية الأصلية.

للمنازل العشرية حساب مختلف وهو عدد غير دقيق، لذا يجب معرفة نظامها الخاص. نقترخ عليك الاطلاع على الصفحات التالية:

الثوابت

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

أصغر رقم طبيعي (normalized number) موجب في العدد العشري ذي الدقة المضاعفة. وعادة ما تكون قيمته الافتراضية 2.2250738585072014e-308.

إذا كانت المنصة تدعم الأعداد غير الطبيعية (denormalized numbers)، فسيكون هناك أرقام بين الصفر والقيمة Float::MIN. وتعيد ‎0.0.next_float أصغر عدد عشري موجب بما في ذلك الأعداد غير الطبيعية (denormalized numbers).

MIN_10_EXP

أصغر أس سالب في العدد العشري ذي الدقة المضاعفة إذ تكون 10 مرفوعة إلى هذا الأس ناقص 1. وعادةً ما تكون قيمته الافتراضية ‎-307.

MIN_EXP

أصغر قيمة أس محتملة في العدد العشري ذي الدقة المضاعفة. وعادةً ما تكون قيمته الافتراضية ‎-1021.

NAN

تعبير يمثل القيمة "ليست عددًا" (not a number).

RADIX

أساس العدد العشري، أو عدد الأرقام الفريدة المستخدمة لتمثيل العدد. وعادةً ما تكون قيمته الافتراضية 2 على معظم الأنظمة، والتي تمثل النظام العشري ذي الأساس 10.

ROUNDS

يمثل وضع التقريب لإضافة المنازل العشرية. وعادةً ما تكون قيمته الافتراضية 1، التقريب إلى أقرب عدد.

وتشمل الأوضاع الأخرى:

  • -1: مُتعذِّر تحديده.
  • 0: التقريب نحو الصفر.
  • 1: التقريب إلى أقرب عدد.
  • 2: التقريب نحو اللانهاية الموجبة.
  • 3: التقريب نحو اللانهاية السالبة.

توابع النسخة العامة

%

يعيد باقي عملية قسمة عدد عشري على عدد آخر.

*

يعيد ناتج عملية ضرب عدد عشري بعدد آخر.

**

يعيد ناتج عملية رفع عدد عشري (الأساس) إلى قوة عدد محدد (الأس).

+

يعيد ناتج عملية الجمع بين عددين.

-

يعيد ناتج عملية الطرح بين عددين.

-

إن استُعمِل هذا المعامل بالشكل ‎-Float، فسيعيد القيمة المعاكسة للعدد Float العشري (أي القيمة السالبة إن كان Float موجبًا أو العكس بالعكس).

/

يعيد ناتج عملية القسمة بين عدد عشري وعدد آخر.

>

يعيد القيمة true إن كانت قيمة العدد العشري الواقع على يساره أصغر من قيمة العدد المواقع على يمينه.

=>

يعيد القيمة true إن كانت قيمة العدد العشري الواقع على يساره أصغر من أو تساوي قيمة العدد الواقع على يمينه.

<=>

يعيد عددً‎ا صحيحًا (‎-1 أو 0 أو ‎+1) إذا كان العدد العشري الواقع على يساره أصغر من أو يساوي أو أكبر من العدد الآخر الواقع على يمينه على التوالي.

==

يعيد القيمة true إن كان العدد العشري الواقع على يساره يساوي القيمة الواقعة على يمينه. 

<

يعيد القيمة true إن كانت قيمة العدد العشري الواقع على يساره أكبر من قيمة العدد الآخر الواقع على يمينه.

=<

يعيد القيمة true إن كانت قيمة العدد العشري الواقع على يساره أكبر من أو تساوي قيمة العدد الآخر الواقع على يمينه.

abs

يعيد القيمة المطلقة للعدد العشري الذي استُدعي معه.

angle

يعيد القيمة 0 إن كان العدد العشري الذي استُدعي معه موجبًا، أو القيمة pi خلاف ذلك.

arg

يعيد القيمة 0 إن كان العدد العشري الذي استُدعي معه موجبًا، أو القيمة pi خلاف ذلك.

ceil

يعيد أصغر عدد من الأعداد الأكبر من أو تساوي العدد العشري الذي استُدعي معه وبدقة محدَّدة.

coerce

يحول العدد المستدعى معها والعدد العشري المُمرَّر إليها إلى النوع Float ويعيدهما في مصفوفة.

denominator

يعيد المقام (denominator) للعدد الكسري الذي استدعي معه، ويكون دائمًا موجبًا.

divmod

يعيد مصفوفة تحتوي على حاصل (quotient) وباقي قسمة العدد الذي استُدعي معه على العدد المُمرَّر إليه.

eql?‎

يتحقق إن كان العدد الذي استُدعي معه والعدد المُمرَّر إليه من نفس النوع (أي كلاهما عدد عشري) ومتساويين في القيمة.

fdiv

يجري عملية القسمة بين العدد الذي استدعي معه والعدد الذي مُرِّر إليه ثم يعيد الناتج في عدد عشري.

finite?‎

يتحقق إذا كان العدد العشري الذي استدعي معه عددًا عشريًّا صالحًا وفقًا لمعيار IEEE؛ أي أنه ليس عددٌ لا نهائي ويعيد التابع ‎nan?‎ القيمة false معه.

floor

يعيد أكبر عدد من الأعداد الأصغر من أو تساوي العدد العشري الذي استُدعي معه وبدقة محدَّدة.

hash

يعيد القيمة hash للعدد العشري الذي استدعي معه.

infinite?‎

يتحقق إذا ما إن كان العدد الذي استدعي معه منتهيًا (finite) أو غير منتهي من الطرف السالب (‎-Infinity) أو غير منتهي من الطرف الموجب (‎+Infinity).

inspect

هو اسم بديل للتابع to_s.

magnitude

يعيد القيمة المطلقة للعدد العشري الذي استُدعي معه.

modulo

يعيد باقي عملية قسمة العدد العشري الذي استُدعي معه على العدد المُعطى.

nan?‎

يتحقق إذا كان العدد العشري الذي استدعي معه عددًا عشريًّا غير صالح وفقًا لمعيار IEEE.

negative?‎

يتحقق إن كان العدد العشري الذي استُدعي معه عددًا سالبًا.

next_float

يعيد العدد العشري الذي يلي العدد العشري الذي استُدعي معه.

numerator

يعيد البسط للعد الكسري الذي استدعي معه.

phase

يعيد القيمة 0 إن كان العدد العشري الذي استُدعي معه موجبًا، أو يعيد القيمة piخلاف ذلك.

positive?‎

يتحقق إن كان العدد العشري الذي استُدعي معه عددًا موجبًا.

prev_float

يعيد العدد العشري الذي يسبق العدد العشري الذي استُدعي معه.

quo

يعيد ناتج قسم العدد العشري المستدعى معه على العدد العشري المُمرَّر إليه.

rationalize

يعيد قيمة تقريبة بسيطة (flt-|eps| <= result <= flt+|eps|‎) للعدد العشري الذي استدعي معه.

round

يقرِّب العدد الذي استُدعي معه إلى أقرب قيمة بدقة محدَّدة.

to_f

يعيد العدد العشري الذي استدعي معه نفسه.

to_i

يحول العدد العشري الذي استُدعي معه إلى عدد صحيح.

to_int

يحول العدد العشري الذي استُدعي معه إلى عدد صحيح.

to_r

يحول العدد العشري الذي استُدعي معه إلى عدد جذري (rational).

to_s

يحول العدد العشري الذي استدعي معه إلى سلسلة نصية.

truncate

يعيد العدد العشري الذي استُدعي معه بعد اقتطاعه إلى دقة (precision) محدَّدة.

zero?‎

يتحقق إن كانت قيمة العدد العشري الذي استُدعي معه تساوي الصفر.

مصادر