Exercício - Descubra tipos de ponto flutuante
- 8 minutos
Neste exercício, você trabalha com tipos de dados de ponto flutuante para aprender sobre as diferenças matizadas entre cada tipo de dados.
Um número em ponto flutuante é um tipo de valor simples que representa números à direita do ponto decimal. Ao contrário dos números integrais, há outras considerações além dos valores máximos e mínimos que você pode armazenar em um determinado tipo de vírgula flutuante.
Avaliar tipos de ponto flutuante
Primeiro, você deve considerar os dígitos de precisão que cada tipo permite. Precisão é o número de posições de valor armazenadas após a vírgula decimal.
Em segundo lugar, você deve considerar a maneira como os valores são armazenados e o impacto na precisão do valor. Por exemplo, float e double os valores são armazenados internamente em um formato binário (base 2), enquanto decimal é armazenado em um formato decimal (base 10). Por que isso é importante?
Executar matemática em valores binários de vírgula flutuante pode produzir resultados que podem surpreendê-lo se você estiver acostumado a matemática decimal (base 10). Muitas vezes, a matemática binária de ponto flutuante é uma aproximação do valor real. Portanto, float e double são úteis porque grandes números podem ser armazenados usando uma pequena pegada de memória. No entanto, float e double só deve ser usado quando uma aproximação é útil. Por exemplo, ser alguns milésimos impreciso ao calcular o salpico de uma bola de neve num jogo de vídeo é aceitável.
Quando precisar de uma resposta mais precisa, deve utilizar decimal. Cada valor do tipo decimal tem uma pegada de memória relativamente grande, no entanto, a execução de operações matemáticas oferece um resultado mais preciso. Portanto, você deve usar decimal ao trabalhar com dados financeiros ou qualquer cenário em que você precise de um resultado preciso de um cálculo.
Use as propriedades MinValue e MaxValue para cada tipo de float assinado
Exclua ou use o operador
//de comentário de linha para comentar todo o código dos exercícios anteriores.Para ver os intervalos de valores para os vários tipos de dados, atualize seu código no Editor de Códigos do Visual Studio da seguinte maneira:
Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
No menu Ficheiro do Visual Studio Code, selecione Guardar.
O arquivo Program.cs deve ser salvo antes de criar ou executar o código.
No painel EXPLORER, para abrir um Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.
Um painel do Terminal deve ser aberto e deve incluir uma linha de comandos, indicando que o Terminal está aberto na localização da pasta TestProject.
No prompt de comando do Terminal, para executar o código, digite dotnet run e pressione Enter.
Se você vir uma mensagem dizendo "Não foi possível encontrar um projeto para executar", verifique se o prompt de comando do Terminal exibe o local esperado da pasta TestProject. Por exemplo:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Deverá ver o seguinte resultado:
Floating point types: float : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision) double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision) decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
Como você pode ver, float e double use uma notação diferente do que é usado por decimal para representar seus maiores e menores valores possíveis. Mas o que significa essa notação?
Decifrar grandes valores de vírgula flutuante
Como os tipos de ponto flutuante podem conter grandes números com precisão, seus valores podem ser representados usando "notação E", que é uma forma de notação científica que significa "vezes 10 elevado à potência de". Assim, um valor como 5E+2 seria o valor 500 porque é o equivalente a 5 * 10^2, ou 5 x 102.
Recapitulação
- Um tipo de ponto flutuante é um tipo de dados de valor numérico simples que pode conter números fracionários.
- Escolher o tipo de ponto flutuante certo para seu aplicativo requer que você considere mais do que apenas os valores máximos e mínimos que ele pode manter. Você também deve considerar quantos valores podem ser preservados após o decimal, como os números são armazenados e como seu armazenamento interno afeta o resultado das operações matemáticas.
- Valores de ponto flutuante podem às vezes ser representados usando a "notação E" quando os números ficam especialmente grandes.
- Há uma diferença fundamental em como o compilador e o tempo de execução lidam com
decimalem oposição afloatoudouble, especialmente ao determinar quanta precisão é necessária das operações matemáticas.