Compartilhar via


Como usar números inteiros e de ponto flutuante em C#

Este tutorial ensina sobre os tipos numéricos em C#. Você escreve pequenas quantidades de código e, em seguida, compila e executa esse código. O tutorial contém uma série de lições que exploram números e operações matemáticas em C#. Essas lições ensinam os conceitos básicos da linguagem C#.

Dica

Quando um bloco de snippet de código inclui o botão "Executar", esse botão abre a janela interativa ou substitui o código existente na janela interativa. Quando o snippet não inclui um botão "Executar", você pode copiar o código e adicioná-lo à janela interativa atual.

Explorar aritmética de inteiros

Execute o código a seguir na janela interativa.

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

O código anterior demonstra operações matemáticas fundamentais com inteiros. O int tipo representa um inteiro, um número inteiro positivo ou negativo. Use o + símbolo para adição. Outras operações matemáticas comuns para inteiros incluem:

  • - para subtração
  • * para multiplicação
  • / para divisão

Comece explorando essas operações diferentes. Modifique a terceira linha para experimentar cada uma dessas operações. Por exemplo, para tentar a subtração, substitua o + por um - conforme mostrado na linha seguinte.

int c = a - b;

Experimente. Selecione o botão "Executar". Em seguida, tente a multiplicação * e a divisão /. Você também pode experimentar escrevendo várias operações matemáticas na mesma linha, se desejar.

Dica

Ao explorar C# (ou qualquer linguagem de programação), você comete erros ao escrever código. O compilador localiza esses erros e os reporta a você. Quando a saída contiver mensagens de erro, examine atentamente o código de exemplo e o código na janela interativa para ver o que corrigir. Esse exercício ajuda você a aprender a estrutura do código C#.

Explorar a ordem das operações

A linguagem C# define a precedência de diferentes operações matemáticas com regras consistentes com as regras que você aprendeu em matemática. Multiplicação e divisão têm precedência sobre adição e subtração. Explore isso executando o seguinte código na janela interativa:

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

A saída demonstra que a multiplicação é executada antes da adição.

Você pode forçar uma ordem de operação diferente adicionando parênteses em torno da operação ou das operações que deseja executar primeiro. Adicione as seguintes linhas à janela interativa:

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

Explore mais combinando várias operações diferentes. Substitua a quarta linha no código anterior por algo assim:

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

Você pode notar um comportamento interessante para números inteiros. A divisão de inteiros sempre produz um resultado inteiro, mesmo quando você espera que o resultado inclua uma parte decimal ou fracionária.

Experimente o seguinte código:

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

Explorar a precisão e os limites de inteiros

Esse último exemplo mostrou que a divisão de inteiros trunca o resultado. Você pode obter o resto usando o operador resto, o % caractere:

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}");

O tipo inteiro de C# difere dos inteiros matemáticos de uma outra maneira: o int tipo tem limites mínimos e máximos. Experimente o seguinte código para ver esses limites:

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

Se um cálculo produzir um valor que exceda esses limites, você terá uma condição de subfluxo ou estouro . A resposta parece quebrar de um limite para o outro. Para ver um exemplo, adicione estas duas linhas na janela interativa:

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

Observe que a resposta está muito próxima do número inteiro mínimo (negativo). É o mesmo que min + 2. A operação de adição transbordou os valores permitidos para inteiros. A resposta é um número negativo grande, pois um estouro "envolve" do maior valor de inteiro possível para o menor.

Há outros tipos numéricos com limites e precisão diferentes que você usaria quando o int tipo não atende às suas necessidades. Vamos explorar esses tipos de números em seguida.

Trabalhar com o tipo Double

O double tipo numérico representa um número de ponto flutuante de precisão dupla. Esses termos podem ser novos para você. Um número de ponto flutuante é útil para representar números nonintegrais que podem ser grandes ou pequenos em magnitude. Precisão dupla é um termo relativo que descreve o número de dígitos binários usados para armazenar o valor. Números de precisão dupla têm o dobro do número de dígitos binários como precisão única. Em computadores modernos, é mais comum usar precisão dupla do que números de precisão única. Números de precisão simples são declarados usando a float palavra-chave. Vamos explorar. Execute o seguinte código e veja o resultado:

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

Observe que a resposta inclui a parte decimal do quociente. Experimente uma expressão ligeiramente mais complicada com duplas. Você pode usar os seguintes valores ou substituir outros números:

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

O intervalo de um valor duplo é maior que valores inteiros. Experimente o seguinte código na janela interativa:

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

Esses valores são impressos em notação científica. O número antes do E é o significando. O número após o E é o expoente, como uma potência de 10.

Assim como números decimais em matemática, as duplas em C# podem ter erros de arredondamento. Experimente este código:

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

Você sabe que 0.3 é 3/10 e não exatamente o mesmo que 1/3. Da mesma forma, 0.33 é 33/100. Esse valor está mais próximo 1/3, mas ainda não é exato. Não importa quantas casas decimais você adicione, um erro de arredondamento permanece.

Desafio

Experimente outros cálculos com números grandes, números pequenos, multiplicação e divisão usando o double tipo. Tente cálculos mais complicados.

Trabalhar com tipos decimais

Ainda há outro tipo: o tipo decimal. O decimal tipo tem um intervalo menor, mas maior precisão que double. Vamos dar uma olhada.

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

Observe que o intervalo é menor que o double tipo. Você pode ver a maior precisão com o tipo decimal ao tentar o seguinte código:

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

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

Observe que a matemática que usa o tipo decimal tem mais dígitos à direita do ponto decimal.

Os números com sufixo M são a maneira de indicar que uma constante deve utilizar o tipo decimal. Caso contrário, o compilador assume o tipo double.

Observação

A letra M foi escolhida como a letra mais visualmente distinta entre as palavras-chave double e decimal.

Desafio

Escreva um código que calcula a área de um círculo cujo raio é de 2,50 centímetros. Lembre-se de que a área de um círculo é o raio quadrado multiplicado por PI. Uma dica: o .NET contém uma constante para PI, Math.PI que você pode usar para esse valor. Math.PI, como todas as constantes declaradas no System.Math namespace, é um double valor. Por esse motivo, você deve usar os valores de double em vez de decimal para esse desafio.

Você deve obter uma resposta entre 19 e 20.

Depois de experimentá-lo, abra o painel de detalhes para ver como você fez:

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

Experimente outras fórmulas se quiser.

Você concluiu o tutorial interativo "Números em C#". Você pode selecionar o link Branches e Loops para iniciar o próximo tutorial interativo ou visitar o site do .NET para baixar o SDK do .NET, criar um projeto em seu computador e continuar codificando. A seção "Próximas etapas" traz você de volta a esses tutoriais.

Você pode saber mais sobre números em C# nos seguintes artigos: