atof
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <stdlib.h>
|
||
double atof( const char* str ); |
||
تستخلص قيمة لعدد ذو فاصلة عائمة من سلسلة بايت مشار إليها بـ str
تتجاهل الدالة أي مسافات (يتم اختبار الحروف باستخدام isspace()) حتى يتم الوصول إلى أول حرف ليس مسافة. بعد ذلك تاخذ أكبر عددد ممكن من الحروف التي يمكن تشكيل عدد ذو فاصلة عائمة منها. يمكن للسلسلة النصية أن تكون أحد هذه الأشياء:
- تمثيل عشري لعدد ذو فاصلة عائمة. يتكون ذلك من:
- (اختياري) علامة موجب أو سالب
- رقم واحد على الأقل وربما فاصلة (يتم اختبار الفاصلة طبقا لشروط setlocale) (هذا هو الأساس)
- (اختياري) e أو E متبوعة بعلامة موجب أو سالب اختيارية ورقم واحد على الأقل (هذا هو أس العشرة المضروبة)
- تمثيل ثنائي لعدد ذو فاصلة عائمة. يتكون ذلك من:
- (اختياري) علامة موجب أو سالب
- 0x أو 0X
- رقم ستةعشري واحد على الأقل وربما فاصلة (يتم اختبار الفاصلة طبقا لشروط setlocale) (هذا هو الأساس)
- (اختياري) p أو متبوعة بعلامة موجب أو سالب اختيارية ورقم واحد على الأقل (هذا هو أس الاثنين المضروبة)
- اللا نهاية (Infinity) :
- (اختياري) علامة موجب أو سالب
- السلسلة INF أو INFINITY بغض النظر عن كون بعض الحروف Capital أو small (أي case-insensitive)
- "ليس بعدد" (Not-A-Number):
- (اختياري) علامة موجب أو سالب
- السلسلة NAN أو NAN(char_sequence) مع تجاهل كون حروف NAN Capital أو small. char_sequence تحوى أرقام وحروف جقط. الناتج هو قيمة NaN صامتة.
- حسب الإعداد المحلي setlocale يجوز وجوود صور أخرى غير التي ذكرت هنا
المعطيات
| 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
أنظر أيضا
| تحول سلسلة من البايت إلى عدد ذو فاصلة عائمة (دالة) | |
مقالة مرجع C++ عن atof
| |