Exercício – Descobrir tipos de ponto flutuante

Concluído

Neste exercício, você trabalha com tipos de dados de ponto flutuante para saber quais são as diferenças sutis entre cada tipo de dados.

Um ponto flutuante é um tipo de valor simples que representa números à direita da casa decimal. Ao contrário dos números integrais, há outras considerações além dos valores máximo e mínimo que você pode armazenar em um determinado tipo de ponto flutuante.

Avaliar tipos de ponto flutuante

Primeiro, você também deve considerar os dígitos de precisão que cada um permite. Precisão é o número de casas com valores armazenadas após o ponto decimal.

Em seguida, você deverá considerar a maneira como os valores são armazenados e o impacto sobre a precisão do valor. Em outras palavras, os valores float e double são armazenados internamente em um formato binário (base 2), enquanto decimal é armazenado em um formato decimal (base 10). Por que isso importa?

A execução de matemática em valores de ponto flutuante binários pode produzir resultados que poderão surpreender você se você estiver acostumado com matemática decimal (base 10). Geralmente, a matemática de ponto flutuante binária é uma aproximação do valor real. Isso significa que float e double são úteis, porque números grandes podem ser armazenados usando um pequeno volume de memória. No entanto, float e double só devem ser usados quando uma aproximação é útil. Por exemplo, errar em alguns milhares ao calcular a zona de explosão de uma bola de neve em um videogame é uma aproximação boa o suficiente.

Quando você precisar de uma resposta mais precisa, deverá usar decimal. Cada valor do tipo decimal tem um volume de memória relativamente grande; contudo, efetuar operações matemáticas dá a você um resultado mais preciso. Portanto, você deve usar o decimal ao trabalhar com os dados financeiros ou com qualquer cenário em que seja necessário um resultado preciso de um cálculo.

Usar as propriedades MinValue e MaxValue para cada tipo de float com sinal

  1. Exclua ou use o operador de comentário de linha // para remover todo o código dos exercícios anteriores.

  2. Para ver os intervalos de valores dos diversos tipos de dados, atualize o código no Editor do Visual Studio Code 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)");
  1. No menu Arquivo do Visual Studio Code, selecione Salvar.

    O arquivo Program.cs deve ser salvo antes de criar ou executar o código.

  2. No painel EXPLORER, para abrir o Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.

    Um painel Terminal deve ser aberto e incluir um prompt de comando mostrando que o Terminal está aberto no local da pasta TestProject.

  3. No prompt de comando do Terminal, para executar o código, digite dotnet run e pressione Enter.

    Se você vir a mensagem "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>

    A seguinte saída deve ser exibida:

    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 é possível notar, float e double usam uma notação diferente de decimal para representar os maiores e menores valores possíveis. Mas o que essa notação significa?

Decifrar valores grandes de ponto flutuante

Como os tipos de ponto flutuante podem conter números grandes com precisão, os valores podem ser representados usando a "notação E", que é uma forma de notação científica que significa "vezes dez elevado à potência de". Assim, um valor como 5E+2 seria o valor 500, pois é equivalente a 5 * 10^2 ou 5 x 102.

Recapitulação

  • Um tipo de ponto flutuante é um tipo de dados de valor simples que pode conter números fracionários.
  • A escolha do tipo de ponto flutuante certo para seu aplicativo exige que você considere mais do que apenas os valores máximo e mínimo que ele pode conter. Você também precisa considerar quantos valores podem ser preservados após o decimal, como os números são armazenados e como o armazenamento interno afeta o resultado de operações matemáticas.
  • Às vezes, os valores de ponto flutuante podem ser representados usando a "notação E", quando os números aumentam bastante.
  • Há uma diferença fundamental em como o compilador e o tempo de execução manipulam o decimal em oposição ao float ou ao double, principalmente ao determinar quanta precisão é necessária de operações matemáticas.

Verificar seu conhecimento

1.

Qual é o melhor tipo de dados para usar no processamento de depósitos bancários?