المتغيرات
فضاءات التسمية
أفعال

atof

من cppreference.com
< c‏ | string‏ | byte
معرفة في ملف <stdlib.h>
double atof( const char* str );

تستخلص قيمة لعدد ذو فاصلة عائمة من سلسلة بايت مشار إليها بـ ‎str‎

تتجاهل الدالة أي مسافات (يتم اختبار الحروف باستخدام isspace()‎) حتى يتم الوصول إلى أول حرف ليس مسافة. بعد ذلك تاخذ أكبر عددد ممكن من الحروف التي يمكن تشكيل عدد ذو فاصلة عائمة منها. يمكن للسلسلة النصية أن تكون أحد هذه الأشياء:

  • تمثيل عشري لعدد ذو فاصلة عائمة. يتكون ذلك من:
  • (اختياري) علامة موجب أو سالب
  • رقم واحد على الأقل وربما فاصلة (يتم اختبار الفاصلة طبقا لشروط locale‎) (هذا هو الأساس)
  • (اختياري) e أو E متبوعة بعلامة موجب أو سالب اختيارية ورقم واحد على الأقل (هذا هو أس العشرة المضروبة)
  • تمثيل ثنائي لعدد ذو فاصلة عائمة. يتكون ذلك من:
  • (اختياري) علامة موجب أو سالب
  • 0x أو 0X
  • رقم ستةعشري واحد على الأقل وربما فاصلة (يتم اختبار الفاصلة طبقا لشروط locale‎) (هذا هو الأساس)
  • (اختياري) p أو متبوعة بعلامة موجب أو سالب اختيارية ورقم واحد على الأقل (هذا هو أس الاثنين المضروبة)
  • اللا نهاية (Infinity) :
  • (اختياري) علامة موجب أو سالب
  • السلسلة INF أو INFINITY بغض النظر عن كون بعض الحروف Capital أو small (أي case-insensitive)
  • "ليس بعدد" (Not-A-Number):
  • (اختياري) علامة موجب أو سالب
  • السلسلة NAN أو NAN(char_sequence)‎ مع تجاهل كون حروف NAN ‏ Capital أو small.‏ char_sequence تحوى أرقام وحروف جقط. الناتج هو قيمة NaN صامتة.
  • حسب الإعداد المحلي locale‎ يجوز وجوود صور أخرى غير التي ذكرت هنا

محتويات

[تعديل] المعطيات

str - مؤشر إلى سلسلة من الحروف منتهية بـ ‎'\0'

[تعديل] القيمة المُرجعة

قيمة من النوع double تقابل محتوى ‎str‎ عند النجاح. في حالة كانت القيمة المحولة خارج النطاق تكون القيمة المُرجعة غير معرفة. في حالة فشل التحويل يتم إرجاع 0.0.

[تعديل] ملحوظات

سواء في حالة الفشل التام أو عند ترجمة سلسلة عبارة عن الرقم 0 يتم إرجاع القيمة صفر. لذلك السبب يفضل استخدام strtod‎ لأنها توفر امكانية الكشف عن الأخطاء.


[تعديل] مثال

#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
    printf("%g\n", atof("  -0.0000000123junk"));
    printf("%g\n", atof("0.012"));
    printf("%g\n", atof("15e16"));
    printf("%g\n", atof("-0x1afp-2"));
    printf("%g\n", atof("inF"));
    printf("%g\n", atof("Nan"));
 
    return 0;
}

الخرج:

-1.23e-08
0.012
1.5e+17
-107.75
inf
nan

[تعديل] أنظر أيضا

تحول سلسلة من البايت إلى عدد ذو فاصلة عائمة
(دالة) [edit]