C# programlamasında, çeşitli kaynaklardan gelen verileri işlerken sıklıkla karşılaşılan bir görev, dizeleri kayan noktalı sayılara dönüştürmektir. Bu makale, daha dirençli bir uygulama için hata işlemeyi vurgulayarak, bu dönüşüm için verimli ve sağlam yöntemleri ele almaktadır.
İçerik Tablosu
float.Parse()
vefloat.TryParse()
Kullanımıdouble.Parse()
,double.TryParse()
ve Dönüştürme Kullanımı- Doğru Yöntemi Seçme
float.Parse()
ve float.TryParse()
Kullanımı
float.Parse()
yöntemi, bir dizeyi float
‘a dönüştürmek için doğrudan bir yaklaşım sunar. Bununla birlikte, olası istisnaları ele almak çok önemlidir. Daha sağlam bir alternatif, başarı veya başarısızlığı gösteren bir Boole değeri döndürerek istisnalardan kaçınan float.TryParse()
‘dır.
float.Parse()
:
string myString = "3.14159";
float myFloat;
try
{
myFloat = float.Parse(myString);
Console.WriteLine($"Float değeri: {myFloat}");
}
catch (FormatException)
{
Console.WriteLine($"'{myString}' dizisi float olarak ayrıştırılamıyor.");
}
catch (OverflowException)
{
Console.WriteLine($"'{myString}' dizisi bir float için çok büyük veya çok küçük bir sayı temsil ediyor.");
}
float.TryParse()
:
string myString = "3.14159";
float myFloat;
if (float.TryParse(myString, out myFloat))
{
Console.WriteLine($"Float değeri: {myFloat}");
}
else
{
Console.WriteLine($"'{myString}' dizisi float olarak ayrıştırılamıyor.");
}
Daha temiz hata işleme özelliği nedeniyle genellikle float.TryParse()
tercih edilir.
double.Parse()
, double.TryParse()
ve Dönüştürme Kullanımı
Alternatif bir yaklaşım, önce dizeyi bir double
‘a dönüştürmek ve ardından açıkça float
‘a dönüştürmek için double.Parse()
veya double.TryParse()
kullanmayı içerir. Bu, hassasiyet kaybına neden olabilir.
Dönüştürme ile double.Parse()
:
string myString = "1234.56";
float myFloat;
try
{
myFloat = (float)double.Parse(myString);
Console.WriteLine($"Float değeri: {myFloat}");
}
catch (FormatException)
{
Console.WriteLine($"'{myString}' dizisi double olarak ayrıştırılamıyor.");
}
catch (OverflowException)
{
Console.WriteLine($"'{myString}' dizisi bir double için çok büyük veya çok küçük bir sayı temsil ediyor.");
}
Dönüştürme ile double.TryParse()
:
string myString = "1234.56";
double tempDouble;
float myFloat;
if (double.TryParse(myString, out tempDouble))
{
myFloat = (float)tempDouble;
Console.WriteLine($"Float değeri: {myFloat}");
}
else
{
Console.WriteLine($"'{myString}' dizisi double olarak ayrıştırılamıyor.");
}
Doğru Yöntemi Seçme
Çoğu durumda, float.TryParse()
verimlilik ve hata işleme açısından en iyi kombinasyonu sağlar. Zaten double
değerleriyle çalışıyorsanız veya dize bir float
aralığının dışında bir sayıyı temsil edebiliyorsa, dönüştürme ile double.TryParse()
yalnızca düşünülmelidir.
Her zaman olası istisnaları göz önünde bulundurun ve belirli ihtiyaçlarınıza ve hata işleme stratejinize en uygun yöntemi seçin.