Manipular números inteiros e de ponto flutuante
Este tutorial ensina sobre os tipos numéricos em C# interativamente, usando o navegador. Você escreverá C# e verá os resultados da compilação e execução do código. Ele contém uma série de lições que exploram números e operações matemáticas em C#. Estas lições ensinam os princípios básicos da linguagem C#.
Dica
Para colar um snippet de código dentro do modo de foco você deve usar o atalho de teclado (Ctrl + v ou cmd + v).
Explorar a matemática de inteiros
Execute o seguinte código na janela interativa. Selecione o botão Entrar em modo de foco. Em seguida, digite o seguinte bloco de código na janela interativa e selecione Executar:
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Se você estiver trabalhando no ambiente, siga as instruções para a versão local.
Você viu apenas uma das operações matemáticas fundamentais com números inteiros. O tipo int
representa um inteiro, um número inteiro positivo ou negativo. Você usa o símbolo +
para adição. Outras operações matemáticas comuns para inteiros incluem:
-
para subtração*
para multiplicação/
para divisão
Dica
Explorar por conta própria todo o tutorial interativo, modificando o código que você escreveu na janela interativa. Este tutorial fornece exemplos para teste a cada etapa.
Comece explorando essas diferentes operações. Modifique a terceira linha para testar cada uma dessas operações. Após cada edição, selecione o botão Executar.
Subtração:
int c = a - b;
Multiplicação:
int c = a * b;
Divisão:
int c = a / b;
Você também pode experimentar executar várias operações matemáticas na mesma linha, se quiser.
Dica
À medida que explora C# (ou qualquer linguagem de programação), você cometerá erros ao escrever o código. O compilador encontrará esses erros e os reportará a você. Quando a saída contiver mensagens de erro, analise atentamente o código de exemplo e o código na janela interativa para ver o que deve ser corrigido. Esse exercício ajudará você a conhecer a estrutura do código C#.
Explorar a ordem das operações
A linguagem C# define a precedência de operações matemáticas diferentes com regras consistentes às regras que você aprendeu em matemática. Multiplicação e divisão têm precedência sobre adição e subtração. Explore 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 diferente de operações, adicionando parênteses para delimitar a operação, ou operações, que você quer realizar primeiro:
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Explore mais, combinando várias operações diferentes. Substitua a quarta linha acima por algo parecido com isto:
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Talvez você tenha observado um comportamento interessante com relação aos 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.
Se você ainda não viu esse comportamento, tente o seguinte:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Clique novamente em Executar para ver os resultados.
Explorar a precisão de inteiros e limites
Esse último exemplo mostrou que uma divisão de inteiros trunca o resultado.
Você pode obter o restante usando o operador restante, 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 de inteiro C# difere do inteiros matemáticos de outra forma: o tipo int
tem limites mínimo e máximo. Execute este código na janela interativa 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 excede esses limites, você terá uma condição de estouro negativo ou estouro. A resposta parece quebrar de um limite para o outro. Adicione estas duas linhas à janela interativa para ver um exemplo:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Observe que a resposta é muito próxima do mínimo inteiro (negativo). É o mesmo que min + 2
.
A operação de adição estourou os valores permitidos para números inteiros.
A resposta é um número negativo muito 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 tipo int
não atendesse às suas necessidades. Vamos explorar esses tipos de números em seguida.
Trabalhar com o tipo Double
O tipo numérico double
representa um número de ponto flutuante de precisão dupla. Esses termos podem ser novidade para você. Um número de ponto flutuante é útil para representar números não integrais que podem ser muito grandes ou pequenos em magnitude. Precisão dupla é um termo relativo que descreve os números de dígitos binários usados para armazenar o valor. Os números de precisão dupla têm o dobro do número de dígitos binários do que os de precisão simples. Em computadores modernos, é mais comum usar precisão dupla que números de precisão única. Números de precisão simples são declarados usando a palavra-chave float
.
Vamos explorar. Experimente o seguinte código na janela interativa 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 duplos:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
O intervalo de um valor duplo é muito maior do 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 à esquerda do E
é o significando. O número à direita é o expoente, como uma potência de 10.
Assim como os números decimais em matemática, os duplos em C# podem ter erros de arredondamento. Experimente esse 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
. Isso é mais próximo de 1/3
, mas ainda não exato.
Desafio
Experimente outros cálculos com números grandes, números pequenos, multiplicação e divisão usando o tipo double
. Experimente cálculos mais complicados.
Trabalhar com tipos decimais
Você viu os tipos numéricos básicos em C#: inteiros e duplos. Ainda há outro tipo: o tipo decimal
. O tipo decimal
tem um intervalo menor, mas precisão maior do 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 do que o tipo double
. Veja a precisão maior com o tipo decimal experimentando o código a seguir:
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 o cálculo usando o tipo decimal tem mais dígitos à direita da vírgula decimal.
O sufixo M
nos números é o modo como você indica que uma constante deve usar o tipo decimal
. Caso contrário, o compilador assumirá o tipo double
.
Observação
A letra M
foi escolhida como a letra mais visualmente distinta entre as palavras-chave double
e decimal
.
Desafio
Agora que você viu os diferentes tipos numéricos, 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 quadrado do raio 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 namespace System.Math
, é um valor double
. Por esse motivo, você deve usar valores double
em vez de decimal
para esse desafio.
Você deve obter uma resposta entre 19 e 20.
Desafio concluído
Você conseguiu algo semelhante a isto?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Experimente outras fórmulas, se quiser.
Parabéns!
Você concluiu o tutorial interativo "Números em C#". Selecione o link Branches e Loops abaixo para iniciar o próximo tutorial interativo ou visite o site do .NET para baixar o SDK do .NET, criar um projeto no computador e continuar codificando. A seção "Próximas etapas" leva você de volta a estes tutoriais.
Saiba mais sobre os números em C# nos artigos a seguir:
Tem algum problema com essa seção? Se tiver, envie seus comentários para que possamos melhorar esta seção.