atof
من cppreference.com
معرفة في ملف <stdlib.h> | ||
double atof(constchar* 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")); return0;}
الخرج:
-1.23e-08 0.012 1.5e+17 -107.75 inf nan
[تعديل]أنظر أيضا
تحول سلسلة من البايت إلى عدد ذو فاصلة عائمة (دالة) | |
مقالة مرجع C++ عن atof |