Aracılığıyla paylaş


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

Bu öğreticide size C# dilindeki sayısal türler öğretildi. Küçük miktarlarda kod yazar, sonra bu kodu derleyip çalıştırırsınız. The tutorial contains a series of lessons that explore numbers and math operations in C#. Bu dersler size C# dilinin temellerini öğretir.

Tip

Kod parçacığı bloğu "Çalıştır" düğmesini içerdiğinde, bu düğme etkileşimli pencereyi açar veya etkileşimli penceredeki mevcut kodun yerini alır. Kod parçacığında "Çalıştır" düğmesi olmadığında kodu kopyalayıp geçerli etkileşimli pencereye ekleyebilirsiniz.

Tamsayı matematiği keşfetme

Etkileşimli pencerede aşağıdaki kodu çalıştırın.

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

Yukarıdaki kod, tamsayılarla temel matematik işlemlerini gösterir. int türü, tamsayıolan pozitif veya negatif bir sayıyı temsil eder. Ekleme için + simgesini kullanırsınız. Tamsayılar için diğer yaygın matematik işlemleri şunlardır:

  • - for subtraction
  • * for multiplication
  • / for division

Bu farklı işlemleri keşfederek başlayın. Bu işlemlerin her birini denemek için üçüncü satırı değiştirin. Örneğin, çıkarma işlemini denemek için + aşağıdaki satırda gösterildiği gibi bir - ile değiştirin:

int c = a - b;

Deneyin. "Çalıştır" düğmesini seçin. Ardından çarpmayı, * ve bölmeyi /deneyin. İsterseniz aynı satıra birden çok matematik işlemi yazarak da denemeler yapabilirsiniz.

Tip

C# dilini (veya herhangi bir programlama dilini) keşfederken, kod yazarken hatalar yaparsınız. derleyicisi bu hataları bulur ve size bildirir. Çıktı hata iletileri içerdiğinde, düzeltilmesi gerekenleri görmek için örnek koda ve etkileşimli penceredeki koda yakından bakın. Bu alıştırma, C# kodunun yapısını öğrenmenize yardımcı olur.

İşlem sırasını keşfetme

C# dili, matematikte öğrendiğiniz kurallarla tutarlı kurallarla farklı matematik işlemlerinin önceliğini tanımlar. Multiplication and division take precedence over addition and subtraction. Etkileşimli pencerede aşağıdaki kodu çalıştırarak bunu keşfedin:

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

Çıkış, çarpmanın toplamadan önce gerçekleştirildiğini gösterir.

İlk olarak gerçekleştirilmesini istediğiniz işlemin veya işlemlerin çevresine parantez ekleyerek farklı bir işlem sırasını zorlayabilirsiniz. Etkileşimli pencereye aşağıdaki satırları ekleyin:

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

Birçok farklı işlemi birleştirerek daha fazlasını keşfedin. Yukarıdaki koddaki dördüncü satırı aşağıdaki gibi bir değerle değiştirin:

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

Tamsayılar için ilginç bir davranış fark edebilirsiniz. Tamsayı bölme, sonucun ondalık veya kesirli bir bölüm içermesini bekleseniz bile her zaman bir tamsayı sonucu üretir.

Aşağıdaki kodu deneyin:

int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);

Tamsayı hassasiyetini ve sınırlarını keşfetme

Son örnek, tamsayı bölmenin sonucu kesintiye uğrattığını size gösterdi. You can get the remainder by using the remainder operator, the % character:

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ü matematiksel tamsayılardan farklı bir şekildedir: int türü en düşük ve en yüksek sınırlara sahiptir. Bu sınırları görmek için aşağıdaki kodu deneyin:

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

If a calculation produces a value that exceeds those limits, you have an underflow or overflow condition. Yanıt sanki bir sınırdan diğerine uzanıyor. Bir örneği görmek için etkileşimli pencereye şu iki satırı ekleyin:

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

Yanıtın en düşük (negatif) tamsayıya çok yakın olduğuna dikkat edin. min + 2ile aynıdır. The addition operation overflowed the allowed values for integers. The answer is a large negative number because an overflow "wraps around" from the largest possible integer value to the smallest.

int türü gereksinimlerinizi karşılamadığında kullanabileceğiniz farklı sınırları ve duyarlığı olan başka sayısal türler de vardır. Şimdi bu sayı türlerini inceleyelim.

Work with the double type

double sayısal türü çift duyarlıklı kayan nokta sayısını temsil eder. Bu terimler sizin için yeni olabilir. kayan nokta sayısı, büyük veya küçük boyutlu olabilecek nonintegral sayıları göstermek için yararlıdır. Çift duyarlıklı, 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ı olanların iki katı ikili basamak sayısına sahiptir. Modern bilgisayarlarda çift duyarlık kullanmak, tek duyarlıklı sayılardan daha yaygındır. Tek duyarlıklı sayılar float anahtar sözcüğü kullanılarak bildirilir. Şimdi araştıralım. Aşağıdaki kodu çalıştırın 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ölme işleminin ondalık kısmını içerdiğine dikkat edin. Ondalıklı sayılarla biraz daha karmaşık bir ifade deneyin. Aşağıdaki değerleri kullanabilir veya diğer sayıları değiştirebilirsiniz:

double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);

Çift değer aralığı tamsayı değerlerinden büyüktür. Etkileşimli pencerede aşağıdaki kodu deneyin:

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

Bu değerler bilimsel olarak yazdırılır. The number before the E is the significand. The number after the E is the exponent, as a power of 10.

Matematikteki ondalık sayılar gibi, C# dilindeki çiftlerde de yuvarlama hataları olabilir. Şu kodu deneyin:

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

0.3 3/10 olduğunu ve 1/3ile tam olarak aynı olmadığını biliyorsunuz. Benzer şekilde, 0.3333/100'dır. Bu değer 1/3daha yakındır, ancak yine de tam değildir. No matter how many decimal places you add, a rounding error remains.

Sınaması

double türünü kullanarak büyük sayı, küçük sayı, çarpma ve bölme içeren diğer hesaplamaları deneyin. Daha karmaşık hesaplamalar deneyin.

Ondalık türleriyle çalışma

Öğrenebileceğiniz bir tür daha vardır: decimal türü. decimal türü daha küçük bir aralığa sahiptir ancak double'den daha fazla duyarlığa sahiptir. Şimdi 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 küçük olduğuna dikkat edin. Aşağıdaki kodu deneyerek ondalık türüyle daha büyük duyarlığı 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);

Ondalık türünü kullanan matematik işlemlerinde ondalık noktanın sağında daha fazla basamak olduğuna dikkat edin.

Sayılardaki M soneki, bir sabitin decimal türünü kullanması gerektiğini belirtir. Aksi takdirde, derleyici double türünü varsayar.

Note

M harfi, double ile decimal anahtar sözcükleri arasındaki görsel olarak en belirgin harf olarak seçilmiştir.

Sınaması

Write code that calculates the area of a circle whose radius is 2.50 centimeters. Bir dairenin alanının PI ile çarpılan yarıçap karesi olduğunu unutmayın. Bir ipucu: .NET, pi için bir sabit içerir Math.PI bu değer için kullanabilirsiniz. Math.PI, System.Math ad alanında bildirilen tüm sabitler gibi double bir değerdir. Bu nedenle, bu sınama için double değerleri yerine decimal kullanmalısınız.

19 ile 20 arasında bir yanıt almalısınız.

Bunu denedikten sonra, nasıl yaptığınıza bakmak için ayrıntılar bölmesini açın:

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/NumbersInCsharp/Program.cs" id="Challenge":::

İstersen başka formüller de deneyebilirsiniz.

"C# dilinde sayılar" etkileşimli öğreticisini tamamladınız. You can select the Tuples and types link to start the next interactive tutorial, or you can visit the .NET site to download the .NET SDK, create a project on your machine, and keep coding. "Sonraki adımlar" bölümü sizi bu öğreticilere geri getirir.

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