Manipular números integrais e de ponto flutuante
Este tutorial ensina sobre os tipos numéricos em C# interativamente, usando seu navegador. Você escreverá C# e verá os resultados da compilação e execução do código. Contém uma série de lições que exploram números e operações matemáticas no C#. Estas lições ensinam-lhe as noções básicas da linguagem C#.
Gorjeta
Para colar um trecho de código dentro do modo de foco, você deve usar o atalho de teclado (Ctrl + v ou cmd + v).
Explorar operações matemáticas com números inteiros
Execute o código seguinte na janela interativa. Selecione o botão Inserir 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 em seu ambiente, siga as instruções para a versão local.
Você já viu uma das operações matemáticas fundamentais com números inteiros. O tipo int
representa um número inteiro, positivo ou negativo. Utilize o símbolo +
para a soma. Outras operações matemáticas comuns com números inteiros incluem:
-
para subtração*
para multiplicação/
para divisão
Gorjeta
Ao longo deste tutorial interativo, você pode explorar por conta própria, modificando o código que você escreveu na janela interativa. Este tutorial fornece exemplos que você pode tentar em cada etapa.
Comece por explorar as várias operações. Modifique a terceira linha para experimentar cada uma das 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 escrevendo várias operações matemáticas na mesma linha, se desejar.
Gorjeta
À medida que explora o C# (ou qualquer linguagem de programação), irá cometer erros quando escreve código. O compilador irá encontrar esses erros e comunicá-los a si. Quando a saída incluir mensagens de erro, verifique atentamente o código de exemplo e o código na janela interativa para ver o que tem de corrigir. Esse exercício irá ajudá-lo a aprender a estrutura do código C#.
Explorar a ordem das operações
A linguagem C# define a precedência das várias operações matemáticas com regras que são idênticas às que aprendeu nas aulas de matemática. A multiplicação e a divisão têm precedência sobre a soma e a subtração. Execute o código seguinte na janela interativa para explorar estas regras.
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 é feita antes da soma.
Pode forçar uma ordem diferente para a operação ao adicionar parêntesis à volta da operação ou operações que quer fazer primeiro:
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Junte muitas operações diferentes para explorar mais. Substitua a quarta linha acima com algo parecido com:
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Poderá ter reparado que ocorreu um comportamento interessante relativamente aos números inteiros. A divisão de números inteiros produz sempre um resultado inteiro, mesmo se fosse de esperar que o resultado incluísse uma casa decimal ou uma fração.
Se você não viu esse comportamento, tente o seguinte código:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Selecione Executar novamente para ver os resultados.
Explorar a precisão e os limites dos números inteiros
O último exemplo mostrou que a divisão do número inteiro 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 número inteiro de C# tem ainda outra diferença face aos números inteiros matemáticos - o tipo int
tem limites mínimos e máximos. 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 exceda esses limites, terá uma condição de underflow ou overflow. A resposta parece ajustar-se de um limite ao outro. Adicione estas duas linhas à janela interativa para ver um exemplo:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Repare que a resposta está muito próxima do número inteiro mínimo (negativo). É o mesmo que min + 2
.
A operação de soma excedeu (overflow) os valores permitidos para os números inteiros.
A resposta é um número negativo muito grande, porque um “overflow” ajustou desde o valor de número inteiro maior possível para o mais pequeno.
Existem outros tipos numéricos com limites diferente e precisão que poderá utilizar se o tipo int
não satisfizer as suas necessidades. Vamos explorar esses tipos de números a seguir.
Trabalhar com o tipo duplo
O tipo numérico double
representa um número de vírgula flutuante de precisão dupla. Poderá ainda não ter ouvido falar destes termos. Os números de vírgula flutuante são úteis para representar números fracionários cuja magnitude pode ser muito grande ou pequena. 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 como precisão única. Nos computadores modernos, é mais comum utilizar números de precisão dupla do que de precisão simples. Números de precisão simples são declarados usando a float
palavra-chave.
Vamos explorar. Experimente o código seguinte na janela interativa e veja o resultado:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Repare que a resposta inclui a parte decimal do quociente. Experimente uma expressão ligeiramente mais complicada com tipo duplo:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
A amplitude dos valores duplos é muito superior à dos valores de números inteiros. Experimente o código seguinte na janela interativa:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Estes valores são impressos em notação científica. O número à esquerda de E
é a mantissa. O número à direita é o expoente, à potência de 10.
Tal como os números decimais na matemática, os tipos duplos em C# têm erros de arredondamento. Experimente este código:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Você sabe que é 3/10
e não exatamente o mesmo 1/3
que 0.3
. Da mesma forma, 0.33
é 33/100
. Isso está mais perto 1/3
de , mas ainda não é exato.
Desafio
Tente outros cálculos com números grandes, números pequenos, multiplicação e divisão usando o double
tipo. Experimente cálculos mais complexos.
Trabalhar com tipos decimais
Viu os tipos numéricos básicos em C#, os números inteiros e duplos. Há um outro tipo para aprender: o decimal
tipo. O tipo decimal
tem uma amplitude mais pequena, mas uma precisão superior a double
. Vamos ver:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Repare que a amplitude é inferior à do tipo double
. Pode experimentar o código abaixo para ver a precisão melhor com o tipo decimal:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Repare que a expressão matemática que utiliza o tipo decimal tem mais dígitos à direita da casa decimal.
É com o sufixo M
nos números que indicamos que uma constante deverá utilizar o tipo decimal
. Caso contrário, o compilador assume o double
tipo.
Nota
A letra M
foi escolhida como a letra visualmente mais distinta entre as double
palavras-chave e decimal
as palavras-chave.
Desafio
Agora que já viu os diferentes tipos numéricos, escreva um código que calcule a área de um círculo cujo raio são 2,50 centímetros. Lembre-se de que a área de um círculo é igual ao raio elevado ao quadrado a multiplicar por PI. Uma sugestão: .NET contém uma constante para PI, Math.PI, que pode utilizar nesse valor. Math.PI, como todas as constantes declaradas System.Math
no namespace, é um double
valor. Por essa razão, você deve usar double
em vez de decimal
valores para este desafio.
Deverá obter uma resposta entre 19 e 20.
Desafio concluído
Deparou-se com 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#". Você pode selecionar o link Ramificações e Loops abaixo para iniciar o próximo tutorial interativo ou pode visitar o site do .NET para baixar o SDK do .NET, criar um projeto em sua máquina e continuar codificando. A secção "Próximos passos" traz-o de volta a estes tutoriais.
Você pode saber mais sobre números em C# nos seguintes artigos:
Está com problemas nesta secção? Se sim, envie-nos o seu feedback para que possamos melhorar esta secção.