CodeBlanks Logo Icon CodeBlanks

double.Parse

C# kursu · Başlangıç · Ders 97/116

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

  1. 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.

  2. 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);
  3. Ç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

Başlangıç bölümündeki tüm dersler