Aracılığıyla paylaş


C'de tamsayı ve kayan noktalı sayıları kullanma#

Bu öğreticide C# dilindeki sayısal türler öğretildi. Küçük miktarlarda kod yazacak, ardından bu kodu derleyip çalıştıracaksınız. Öğretici, C# dilindeki sayıları ve matematik işlemlerini inceleyen bir dizi ders içerir. Bu dersler size C# dilinin temel özelliklerini öğretir.

İpucu

Bir kod parçacığını odak moduna yapıştırmak için klavye kısayolunuzu (Ctrl + v veya cmd + v) kullanmanız gerekir.

Önkoşullar

Öğretici, yerel geliştirme için ayarlanmış bir makineniz olmasını bekler. Yükleme yönergeleri ve .NET'te uygulama geliştirmeye genel bakış için bkz. Yerel ortamınızı ayarlama .

Yerel bir ortam ayarlamak istemiyorsanız bu öğreticinin tarayıcı içi etkileşimli sürümüne bakın.

Tamsayı matematiğini inceleme

numbers-quickstart adlı bir dizin oluşturun. Bunu geçerli dizin yapın ve aşağıdaki komutu çalıştırın:

dotnet new console -n NumbersInCSharp -o .

Önemli

.NET 6 için C# şablonları en üst düzey deyimleri kullanır. .NET 6'ya zaten yükselttiyseniz uygulamanız bu makaledeki kodla eşleşmeyebilir. Daha fazla bilgi için Yeni C# şablonları en üst düzey deyimleri oluşturma makalesine bakın

.NET 6 SDK'sı, aşağıdaki SDK'ları kullanan projeler için bir dizi örtükglobal using yönerge de ekler:

  • Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Worker

Bu örtük global using yönergeler, proje türü için en yaygın ad alanlarını içerir.

Daha fazla bilgi için Örtük kullanım yönergeleri makalesine bakın

Sık kullandığınız düzenleyicide Program.cs dosyasını açın ve dosyanın içeriğini aşağıdaki kodla değiştirin:

int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);

Komut pencerenize yazarak dotnet run bu kodu çalıştırın.

Tamsayılar içeren temel matematik işlemlerinden birini gördünüz. Tür int bir tamsayı, sıfır, pozitif veya negatif tamsayıyı temsil eder. Toplama için + sembolünü kullanırsınız. Tamsayılar için sıklıkla kullanılan diğer matematiksel işlemler şunlardır:

  • çıkarma için -
  • çarpma için *
  • bölme için /

Bu farklı işlemleri keşfederek başlayın. Bu satırları değerini yazan satırdan csonra ekleyin:

// subtraction
c = a - b;
Console.WriteLine(c);

// multiplication
c = a * b;
Console.WriteLine(c);

// division
c = a / b;
Console.WriteLine(c);

Komut pencerenize yazarak dotnet run bu kodu çalıştırın.

İsterseniz aynı satırda birden çok matematik işlemi yazarak da denemeler yapabilirsiniz. Örneğin deneyin c = a + b - 12 * 17; . Değişkenlerin ve sabit sayıların karıştırılmasına izin verilir.

İpucu

C# dilini (veya herhangi bir programlama dilini) keşfederken, kod yazdığınızda hatalar yapacaksınız. Derleyici bu hataları bulup size bildirir. Çıkışta hata iletileri olduğunda, nelerin düzeltileceğini görmek için pencerenizdeki örnek koda ve koda yakından bakın. Bu alıştırma, C# kodunun yapısını öğrenmenize yardımcı olur.

İlk adımı tamamladınız. Sonraki bölüme başlamadan önce geçerli kodu ayrı bir yönteme taşıyalım. Yöntem, birlikte gruplandırılmış ve bir ad verilen bir dizi deyimdir. Yönteminin adını ve ardından ()yazarak yöntemini çağırırsınız. Kodunuzu yöntemler halinde düzenlemek, yeni bir örnekle çalışmaya başlamanızı kolaylaştırır. bitirdiğinizde kodunuz şu şekilde görünmelidir:

WorkWithIntegers();

void WorkWithIntegers()
{
    int a = 18;
    int b = 6;
    int c = a + b;
    Console.WriteLine(c);


    // subtraction
    c = a - b;
    Console.WriteLine(c);

    // multiplication
    c = a * b;
    Console.WriteLine(c);

    // division
    c = a / b;
    Console.WriteLine(c);
}

satırı WorkWithIntegers(); yöntemini çağırır. Aşağıdaki kod yöntemini bildirir ve tanımlar.

İşlem sırasını inceleme

çağrısına açıklama satırı ekleyin WorkingWithIntegers(). Bu bölümde çalışırken çıkışı daha az karmaşık hale getirir:

//WorkWithIntegers();

C // # dilinde bir açıklama başlatır. Açıklamalar, kaynak kodunuzda tutmak istediğiniz ancak kod olarak yürütmek istemediğiniz metinlerdir. Derleyici açıklamalardan yürütülebilir kod oluşturmaz. WorkWithIntegers() Bir yöntem olduğundan, yalnızca bir satır açıklama satırı yapmanız gerekir.

C# dili, farklı matematik işlemlerinin önceliğini matematikte öğrendiğiniz kurallarla tutarlı bir şekilde tanımlar. Çarpma ve bölme işlemleri, toplama ve çıkarma işlemlerinden önce gelir. çağrısından WorkWithIntegers()sonra aşağıdaki kodu ekleyerek ve yürüterek dotnet runbunu keşfedin:

int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);

Çıkış, çarpma işleminin toplama işleminden önce gerçekleştiğini gösterir.

önce yapılmasını istediğiniz işlemin veya işlemlerin çevresine parantez ekleyerek farklı bir işlem sırasına zorlayabilirsiniz. Aşağıdaki satırları ekleyin ve yeniden çalıştırın:

d = (a + b) * c;
Console.WriteLine(d);

Birçok farklı işlemi birleştirerek daha fazlasını keşfedin. Aşağıdaki satırlara benzer bir şey ekleyin. dotnet run komutunu yeniden deneyin.

d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);

Tamsayılar için farklı bir davranışla karşılaşmış olabilirsiniz. Sonucun ondalık veya kesir bölümü içermesini bekliyor olsanız da tamsayı bölme işlemi her zaman tamsayı sonucu verir.

Bu davranışı görmediyseniz aşağıdaki kodu deneyin:

int e = 7;
int f = 4;
int g = 3;
int h = (e + f) / g;
Console.WriteLine(h);

Sonuçları görmek için yeniden yazın dotnet run .

Devam etmeden önce bu bölümde yazdığınız tüm kodu alıp yeni bir yönteme ekleyelim. Bu yeni yöntemi OrderPrecedenceçağır. Kodunuz şuna benzer olmalıdır:

// WorkWithIntegers();
OrderPrecedence();

void WorkWithIntegers()
{
    int a = 18;
    int b = 6;
    int c = a + b;
    Console.WriteLine(c);


    // subtraction
    c = a - b;
    Console.WriteLine(c);

    // multiplication
    c = a * b;
    Console.WriteLine(c);

    // division
    c = a / b;
    Console.WriteLine(c);
}

void OrderPrecedence()
{
    int a = 5;
    int b = 4;
    int c = 2;
    int d = a + b * c;
    Console.WriteLine(d);

    d = (a + b) * c;
    Console.WriteLine(d);

    d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
    Console.WriteLine(d);

    int e = 7;
    int f = 4;
    int g = 3;
    int h = (e + f) / g;
    Console.WriteLine(h);
}

Tamsayı duyarlığını ve sınırlarını inceleme

Son örnek, tamsayı bölme işleminin sonucu kestiğini size göstermiştir. Modulo işlecini % (karakteri) kullanarak kalanı alabilirsiniz. yöntemi çağrısından OrderPrecedence()sonra aşağıdaki kodu deneyin:

int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");

C# tamsayı türü diğer bir özelliğiyle matematiksel tamsayılardan farklıdır: int türünün alt ve üst sınırları vardır. Bu sınırları görmek için bu kodu ekleyin:

int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");

Bir hesaplama, bu sınırları aşan bir değer veriyorsa bu, aşağı taşma veya taşma koşulunuzun olduğu anlamına gelir. Yanıtın bir sınırdan diğerine kaydığı görülüyor. Örneği görmek için şu iki satırı ekleyin:

int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");

Yanıtın tam sayı alt sınırına (negatif) oldukça yakın olduğuna dikkat edin. Bu, min + 2 ile aynıdır. Toplama işlemi, tamsayılar için izin verilen değerleri aşmıştır. Taşma durumu en büyük olası tamsayı değerinden en küçük olana "kaydığından" yanıt oldukça büyük bir negatif sayıdır.

int türü, gereksinimlerinizi karşılamadığında kullanabileceğiniz farklı sınırlar ve duyarlık içeren başka sayısal türler de mevcuttur. Şimdi bu diğer türleri keşfedelim. Sonraki bölüme başlamadan önce, bu bölümde yazdığınız kodu ayrı bir yönteme taşıyın. Bunu, TestLimits olarak adlandırın.

Çift tür ile çalışma

double sayısal türü, çift duyarlıklı kayan noktalı bir sayıyı ifade eder. Bu terimler sizin için yeni olabilir. Kayan noktalı sayı, büyüklük açısından oldukça büyük veya küçük olabilen, tamsayı olmayan değerleri ifade etmek için kullanılır. Çift duyarlık , değeri depolamak için kullanılan ikili basamak sayısını açıklayan göreli bir terimdir. Çift duyarlıklı sayılar, tek duyarlıklı olarak ikili basamak sayısının iki katıdır. Modern bilgisayarlarda, tek duyarlıklı sayılardan daha yaygın olarak çift duyarlık kullanılır. Tek duyarlıklı sayılar anahtar sözcüğü kullanılarak float bildirilir. İnceleyelim mi? Aşağıdaki kodu ekleyin ve sonucu görün:

double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);

Yanıtın, bölümün ondalık kısmını içerdiğine dikkat edin. Çift değerlerle biraz daha karmaşık bir ifadeyi deneyin:

double e = 19;
double f = 23;
double g = 8;
double h = (e + f) / g;
Console.WriteLine(h);

Çift değerin aralığı, tamsayı değerlerinden çok daha büyüktür. Şu ana kadar yazdıklarının altındaki kodu deneyin:

double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");

Bu değerler bilimsel gösteriminde yazdırılır. E değerinin sol tarafındaki sayı katsayıdır. Sağ taraftaki sayı 10’un bir kuvveti olarak üstür. Matematikteki ondalık sayılar gibi C# dilindeki çift değerlerde de yuvarlama hataları olabilir. Şu kodu deneyin:

double third = 1.0 / 3.0;
Console.WriteLine(third);

Sınırlı sayıda tekrarlamanın ile tam olarak aynı 1/3olmadığını biliyorsunuz0.3.

Sınama

türünü kullanarak double büyük sayılar, küçük sayılar, çarpma ve bölme ile diğer hesaplamaları deneyin. Daha karmaşık hesaplamalar deneyin. Sınamayla biraz zaman geçirdikten sonra, yazdığınız kodu alın ve yeni bir yönteme yerleştirin. Bu yeni yöntemi olarak adlandır.WorkWithDoubles

Ondalık türlerle çalışma

C# dilinde temel sayısal türleri gördünüz: tamsayılar ve çiftler. Öğrenebileceğiniz başka bir tür daha vardır: decimal türü. decimal türü, double türünden daha küçük bir aralığa ancak daha fazla duyarlığa sahiptir. Şimdi buna bir göz atalım:

decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");

Aralığın double türünden daha küçük olduğuna dikkat edin. Aşağıdaki kodu deneyerek ondalık türünde daha fazla duyarlık olduğunu görebilirsiniz:

double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);

decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);

Sayılardaki M sonekiyle, bir sabit sayının decimal türünü nasıl kullanması gerektiğini belirtirsiniz. Aksi takdirde, derleyici türünü varsayar double .

Not

HarfM, ve decimal anahtar sözcükleri arasında double görsel olarak en belirgin harf olarak seçilmiştir.

Ondalık türünün kullanıldığı matematikte, ondalık ayırıcının sağ tarafında daha fazla basamak bulunduğunu görebilirsiniz.

Sınama

Farklı sayısal türleri gördüğünüze göre yarı çapı 2,50 santimetre olan bir dairenin alanını hesaplayan kodu yazın. Bir dairenin alanının, yarı çapın karesinin PI sayısı ile çarpımından elde edildiğini unutmayın. İpucu: .NET, PI sayısı için kullanabileceğiniz Math.PI sabit değerini içerir. Math.PI, ad alanında System.Math bildirilen tüm sabitler gibi bir double değerdir. Bu nedenle, bu sınama için değerler yerine decimal kullanmanız double gerekir.

19 ile 20 arasında bir yanıt almanız gerekir. GitHub'daki tamamlanmış örnek koda bakarak yanıtınızı kontrol edebilirsiniz.

Dilerseniz diğer formüllerden de deneme yapabilirsiniz.

"C#'de Sayılar" hızlı başlangıcını tamamladınız. Dallar ve döngüler hızlı başlangıcına kendi geliştirme ortamınızda devam edebilirsiniz.

C# dilindeki sayılar hakkında daha fazla bilgiyi aşağıdaki makalelerde bulabilirsiniz: