double.Parse
double.Parse ile ondalıklı sayı okumayı öğrenirsin.
double.Parse ile ondalık
Tamsayı yerine ondalık sayı beklediğinde double.Parse metodunu kullanırsın. Bir dizeyi double'a çevirir; dönüştüremezse FormatException fırlatır. Fiyat, sıcaklık veya boy gibi ölçümlerde sıkça karşına çıkar.
Örneğin double d = double.Parse("3.14"); satırı d'ye 3.14 atar. Burada önemli bir nokta var: ondalık ayraç yerele bağlıdır. Türkçe yerelinde virgül, İngilizce yerelinde nokta kullanılır. Bu konuyu bir sonraki kartta inceleyeceğiz.
CultureInfo ile tutarlılık
Ondalık ayraç yerele bağlı olduğu için double.Parse farklı makinelerde farklı davranabilir. Tutarlılık için CultureInfo.InvariantCulture kullanırsın; böylece ayraç her zaman nokta kabul edilir.
Örnek: double.Parse("3.14", CultureInfo.InvariantCulture) çağrısı hangi yerelde olursan ol 3.14 döndürür. Bunun için using System.Globalization; satırını dosyanın başına eklemen gerekir. Veri alışverişinde ve dosya okurken bu önemlidir.
double.TryParse
Tıpkı int.TryParse gibi double.TryParse de güvenli dönüştürme yapar. İstisna fırlatmak yerine bool döndürür ve sonucu out parametresiyle verir. Kullanıcıdan fiyat veya ölçü okurken idealdir.
Örnek: if (double.TryParse(input, out double price)) ile girdiyi güvenle çözümlersin. Başarısız olursa price sıfır olur ve if bloğuna girilmez. Böylece programın geçersiz girdide çökmeden yoluna devam eder.
Uygulama Fiyatı güvenle çözümle
input değişkenini double.TryParse ile price değişkenine çevir. Dönüşüm başarılıysa price'ı Console.WriteLine ile yazdır. if ile TryParse'ın dönüşünü kontrol etmelisin.
Örnek çözümü göster
double price; tanımla, sonra if (double.TryParse(input, out price)) ile kontrol et ve WriteLine ile price'ı yazdır.
Örnek çözüm:
using System;
class Program
{
static void Main()
{
string input = "25";
double price;
if (double.TryParse(input, out price))
{
Console.WriteLine(price);
}
}
}
Kendini test et
-
double.Parse("3.14") ne döndürür? (varsayılan yerel)
double d = double.Parse("3.14");- 3.14
- 3
- FormatException fırlatır
- 31.4
Cevabı göster
3.14 — Doğru! Noktalı dize, İngilizce yerelinde 3.14 olarak çözümlenir.
-
Invariant ile çözümle
using System.Globalization; string s = "3.14"; double d = double____; Console.WriteLine(d);Cevabı göster
using System.Globalization; string s = "3.14"; double d = double.Parse(s, CultureInfo.InvariantCulture); Console.WriteLine(d); -
Çağrıyı sonucuyla eşleştir
- double.Parse("3.14")
- 3.14
- double.TryParse("abc", out _)
- false
- Parse ile InvariantCulture
- yerel bağımsız