تحويل السلاسل النصية إلى أعداد ذات فاصلة عائمة مهمة متكررة في برمجة C#، وغالبًا ما يتم مواجهتها عند معالجة البيانات من مصادر متنوعة. تتناول هذه المقالة طرقًا فعالة وقوية لهذا التحويل، مع التركيز على معالجة الأخطاء لتطبيق أكثر مرونة.
محتويات الجدول
- استخدام
float.Parse()
وfloat.TryParse()
- استخدام
double.Parse()
، وdouble.TryParse()
، والصب - اختيار الطريقة المناسبة
استخدام float.Parse()
و float.TryParse()
توفر طريقة float.Parse()
نهجًا مباشرًا لتحويل سلسلة نصية إلى float
. ومع ذلك، من الأهمية بمكان معالجة الاستثناءات المحتملة. بديل أكثر قوة هو float.TryParse()
، والذي يتجنب الاستثناءات من خلال إرجاع قيمة منطقية تشير إلى النجاح أو الفشل.
float.Parse()
:
string myString = "3.14159";
float myFloat;
try
{
myFloat = float.Parse(myString);
Console.WriteLine($"قيمة float هي: {myFloat}");
}
catch (FormatException)
{
Console.WriteLine($"تعذر تحليل '{myString}' كـ float.");
}
catch (OverflowException)
{
Console.WriteLine($"السلسلة النصية '{myString}' تمثل عددًا كبيرًا جدًا أو صغيرًا جدًا بالنسبة لـ float.");
}
float.TryParse()
:
string myString = "3.14159";
float myFloat;
if (float.TryParse(myString, out myFloat))
{
Console.WriteLine($"قيمة float هي: {myFloat}");
}
else
{
Console.WriteLine($"تعذر تحليل '{myString}' كـ float.");
}
يُفضل عمومًا استخدام float.TryParse()
لمعالجة الأخطاء الأنظف.
استخدام double.Parse()
، و double.TryParse()
، والصب
يتضمن النهج البديل استخدام double.Parse()
أو double.TryParse()
لتحويل السلسلة النصية أولاً إلى double
، ثم الصب بشكل صريح إلى float
. قد يؤدي هذا إلى فقدان الدقة.
double.Parse()
مع الصب:
string myString = "1234.56";
float myFloat;
try
{
myFloat = (float)double.Parse(myString);
Console.WriteLine($"قيمة float هي: {myFloat}");
}
catch (FormatException)
{
Console.WriteLine($"تعذر تحليل '{myString}' كـ double.");
}
catch (OverflowException)
{
Console.WriteLine($"السلسلة النصية '{myString}' تمثل عددًا كبيرًا جدًا أو صغيرًا جدًا بالنسبة لـ double.");
}
double.TryParse()
مع الصب:
string myString = "1234.56";
double tempDouble;
float myFloat;
if (double.TryParse(myString, out tempDouble))
{
myFloat = (float)tempDouble;
Console.WriteLine($"قيمة float هي: {myFloat}");
}
else
{
Console.WriteLine($"تعذر تحليل '{myString}' كـ double.");
}
اختيار الطريقة المناسبة
في معظم الحالات، يوفر float.TryParse()
أفضل مزيج من الكفاءة ومعالجة الأخطاء. يجب فقط النظر في استخدام double.TryParse()
مع الصب إذا كنت تعمل بالفعل مع قيم double
أو إذا كانت السلسلة النصية قد تمثل عددًا خارج نطاق float
.
تذكر دائمًا مراعاة إمكانية حدوث استثناءات واختر الطريقة التي تناسب احتياجاتك المحددة واستراتيجية معالجة الأخطاء الخاصة بك.