Manipulera heltals- och flyttalsnummer
I den här självstudien lär du dig mer om de numeriska typerna i C# interaktivt med hjälp av webbläsaren. Du skriver C# och ser resultatet av kompileringen och körningen av koden. Den innehåller en serie lektioner där du får utforska olika talåtgärder och matematiska operationer i C#. Under serien får du lära dig grunderna i språket C#.
Dricks
Om du vill klistra in ett kodfragment i fokusläget bör du använda kortkommandot (Ctrl + v eller cmd + v).
Utforska heltalsmatematik
Kör följande kod i det interaktiva fönstret. Välj knappen Ange fokusläge. Skriv sedan följande kodblock i det interaktiva fönstret och välj Kör:
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Om du arbetar med din miljö bör du följa anvisningarna för den lokala versionen i stället.
Du har sett en av de grundläggande matematiska åtgärderna med heltal. Typen int
används till att representera ett integer-värde, som kan vara ett positivt eller negativt heltal. Du använder symbolen +
till att addera. Här är några andra vanliga matematiska operationer för integer-värden:
-
för subtraktion*
för multiplikation/
för division
Dricks
I den här interaktiva självstudien kan du utforska på egen hand genom att ändra koden som du har skrivit i det interaktiva fönstret. Den här självstudien innehåller exempel som du kan prova i varje steg.
Börja med att testa de olika operationerna. Ändra den tredje raden och testa var och en av dem. Efter varje redigering väljer du knappen Kör .
Subtraktion:
int c = a - b;
Multiplikation:
int c = a * b;
Division:
int c = a / b;
Du kan också experimentera genom att skriva flera matematikåtgärder på samma rad, om du vill.
Dricks
När du utforskar C# (eller något annat språk) och skriver kod kommer du att göra misstag. Kompilatorn kommer att hitta de här felen och rapportera dem till dig. När du får felmeddelanden i utdata ska du granska exempelkoden och koden i det interaktiva fönstret noga, så att du ser vad du behöver rätta till. Sådana övningar hjälper dig att lära dig C#-strukturen.
Utforska operationernas ordning
I språket C# definieras olika matematiska operationers prioritet enligt de vanliga regler du lärt dig i matematiken. Multiplikation och division har prioritet framför addition och subtraktion. Testa det genom att köra följande kod i det interaktiva fönstret:
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
Du ser i utdata att multiplikationen utfördes innan additionen.
Du kan tvinga fram en annan ordning genom att lägga till parenteser kring den eller de operationer du vill ska utföras först:
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Testa vidare genom att kombinera många olika operatorer. Byt ut den fjärde raden ovan mot någonting som liknar det här:
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Du kanske har märkt att integer-värden beter sig lite underligt. Vid division med integer-värden returneras alltid ett annat integer-värde, även när du hade förväntat dig en decimal eller bråkdel i resultatet.
Om du inte har sett det här beteendet kan du prova följande kod:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Välj Kör igen för att se resultatet.
Utforska noggrannhet och gränser för integer-värden
I det senaste exemplet såg du att resultatet trunkeras vid division med integer-värden.
Du kan hämta resten med hjälp av restoperatorn, %
tecknet:
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}");
Integer-värden i C# har en annan viktig skillnad jämfört med vanliga heltal i matematiken: typen int
har en största och minsta gräns. Kör den här koden i det interaktiva fönstret så ser du de här gränserna:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Om en beräkning ger ett värde som ligger utanför de här gränserna uppstår tillstånd med understigande eller överstigande värden. Lösningen verkar vara att låta gränserna gå in i varandra. Lägg till de här två raderna i det interaktiva fönstret så ser du ett exempel:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Du ser att svaret ligger mycket nära det minsta tillåtna (negativa) integer-värdet. Det är samma resultat som för min + 2
.
Additionen översteg största tillåtna integer-värde.
Svaret är ett mycket stort negativt tal, eftersom värdet gick från att vara det största möjliga integer-värdet till det minsta.
Det finns andra numeriska typer med andra gränser och noggrannhet, som du kan använda när typen int
inte passar för det du vill göra. Nu ska vi utforska de här typerna av siffror.
Arbeta med typen double
Den numeriska typen double
representerar ett flyttal med dubbelt så stor noggrannhet. Du kanske inte är bekant med de här termerna. Flyttal används till att representera tal som inte är heltal, och som kan vara mycket stora eller små. Dubbel precision är en relativ term som beskriver antalet binära siffror som används för att lagra värdet. Dubbla precisionsnummer har dubbelt så många binära siffror som enkel precision. I moderna datorer är det vanligare att använda flyttal med dubbel noggrannhet än enkel. Enkla precisionsnummer deklareras med nyckelordet float
.
Vi testar. Skriv följande kod i det interaktiva fönstret och granska resultatet:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Lägg märke till att svaret innehåller kvotens decimaldel. Testa ett lite mer komplicerat uttryck med tal av typen double:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
Intervallet för double-värden är mycket större än för integer-värden. Testa följande kod i det interaktiva fönstret:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
De här värdena skrivs ut med vetenskaplig notation. Talet till vänster om E
är signifikanden. Talet till höger är exponenten, med 10 som bas.
Precis som decimaltal i den vanliga matematiken så kan double-värden i C# ha avrundningsfel. Testa den här koden:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Du vet att det 0.3
är 3/10
och inte exakt samma som 1/3
. 0.33
På samma sätt är 33/100
. Det är närmare 1/3
, men ändå inte exakt.
Utmaning
Prova andra beräkningar med stora tal, små tal, multiplikation och division med hjälp av double
typen . Testa mer komplicerade beräkningar.
Arbeta med decimaltyper
Nu har du sett de grundläggande numeriska typerna i C#: integer- och double-värden. Det finns en annan typ att lära sig: typen decimal
. Typen decimal
har ett mindre intervall än double
, men större noggrannhet. Vi tar en titt:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Lägg märke till att intervallet är mindre än för typen double
. Du ser den större noggrannheten genom att testa följande kod:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Nu ser du att resultatet med typen decimal har fler siffror till höger om decimaltecknet.
Du använder suffixet M
efter talen till att ange att konstanten ska ha typen decimal
. Annars förutsätter double
kompilatorn typen.
Kommentar
M
Brevet valdes som den mest visuellt distinkta bokstaven mellan nyckelorden double
och decimal
.
Utmaning
Nu när du sett de olika numeriska typerna ska du skriva kod som beräknar arean för en cirkel med radien 2,50 centimeter. Kom ihåg att en cirkels area är radien i kvadrat gånger Pi. En ledtråd: .NET har en konstant för talet Pi, Math.PI, som du kan använda här. Math.PI, liksom alla konstanter som deklareras i System.Math
namnområdet, är ett double
värde. Därför bör du använda double
i stället decimal
för värden för den här utmaningen.
Du bör få ett svar mellan 19 och 20.
Utmaningen
Skrev du något som liknar det här?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Testa några andra formler om du vill.
Grattis!
Du har slutfört den interaktiva självstudien "Numbers in C#". Du kan välja länken Grenar och loopar nedan för att starta nästa interaktiva självstudie, eller så kan du gå till .NET-webbplatsen för att ladda ned .NET SDK, skapa ett projekt på datorn och fortsätta koda. Avsnittet "Nästa steg" tar dig tillbaka till de här självstudierna.
Du kan lära dig mer om tal i C# i följande artiklar:
Har du ett problem med det här avsnittet? Ge oss då feedback så att vi kan förbättra avsnittet.