parseFloat()‎

من موسوعة حسوب
مراجعة 15:43، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الدالة parseFloat()‎ تُفسِّر سلسلةً نصيةً مُمرَّرةً إليها كوسيط وتُعيد عددًا ذا فاصلة عشرية (عائمة).

البنية العامة

parseFloat(value)

value

القيمة التي ستُفسَّر.

القيمة المعادة

عدد ذو فاصلة عشرية ناتج عن تفسير السلسلة النصية المعطاة، وإذا لم يكن تحويل السلسلة النصية إلى رقم ممكنًا فستعاد القيمة NaN.

الوصف

الدالة parseFloat هي دالة غير مرتبطة بأيّ كائن، وتقبل وسيطًا هو سلسلة نصية، وتحاول تفسيره وتُعيد عددًا ذا فاصلة عشرية، وإذا واجهت الدالة محرفًا لا يُمثِّل إشارةً (+ أو -) أو عددًا (0-9) أو الأس (e)، فستُعيد الدالة القيمة من بداية السلسلة النصية إلى تلك النقطة، وستتجاهل جميع المحارف بعدها، ويُسمَح بوجود فراغات قبل وبعد السلسلة النصية.

إذا كانت القيمة سلسلةً نصيةً ولا يمكن تحويل أوّل محرف فيها إلى رقم، فستُعيد الدالة parseFloat القيمة NaN.

القيمة NaN لا تُمثِّل رقمًا في أي نظام عددي، فيمكنك استدعاء الدالة isNaN لمعرفة إذا كان ناتج الدالة parseFloat هو NaN؛ تذكّر أنَّ قيم NaN عند استخدامها في العمليات الرياضية ستؤدي إلى إعادة كاملة التعبير الرياضي القيمة NaN.

يمكن للدالة parseFloat تفسير وإعادة القيمة Infinity، ويمكن استخدام الدالة isFinite لمعرفة إذا كان الناتج عددًا محدودًا (finite number، أي ليس Infinity أو ‎-Infinity أو NaN).

وتستطيع الدالة parseFloat تفسير كائن إذا كان يملك الدالة toString أو valueOf.

أمثلة

استخدام parseInt

جميع الأمثلة الآتية ستُعيد القيمة 3.14:

parseFloat(3.14);
parseFloat('3.14');
parseFloat('314e-2');
parseFloat('0.0314E+2');
parseFloat('3.14more non-digit characters');

var foo = Object.create(null);
foo.toString = function () { return "3.14"; };
parseFloat(foo);

var foo = Object.create(null);
foo.valueOf = function () { return "3.14"; }; 
parseFloat(foo);​​​​​

أما المثال الآتي فسيعيد القيمة NaN:

parseFloat('FF2');

دالة تفسير تتبع قواعد أكثر صرامة

من المفيد أحيانًا وجود دالة تُفسِّر السلاسل النصية كأرقام لكن مع قواعد أكثر صرامةً، ويمكن أن تفيد التعابير النمطية (regular expressions) هنا:

var filterFloat = function(value) {
    if (/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/
      .test(value))
      return Number(value);
  return NaN;
}

console.log(filterFloat('421'));               // 421
console.log(filterFloat('-421'));              // -421
console.log(filterFloat('+421'));              // 421
console.log(filterFloat('Infinity'));          // Infinity
console.log(filterFloat('1.61803398875'));     // 1.61803398875
console.log(filterFloat('421e+0'));            // NaN
console.log(filterFloat('421hop'));            // NaN
console.log(filterFloat('hop1.61803398875'));  // NaN

لاحظ أنَّ الدالة التي عرّفناها في المثال السابق لا تقبل بعض الأرقام المكتوبة بصيغة صحيحة، مثل ‎1.‎ أو ‎.5.

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

مصادر ومواصفات