C# flutuante

Resumo : neste tutorial, você aprenderá como usar os tipos float C# para representar números de ponto flutuante.

Introdução aos tipos flutuantes C#

Para representar números reais, C# usa os seguintes tipos de números flutuantes float: doublee decimal. A tabela a seguir mostra as características dos tipos de ponto flutuante:

Tipo flutuante Alcance aproximado Precisão Tamanho
float ±1,5 x 10 −45  a ±3,4 x 10 38 ~6-9 dígitos 4 bytes
double ±5,0 × 10 −324  a ±1,7 × 10 308 ~15-17 dígitos 8 bytes
decimal ±1,0 x 10 -28  a ±7,9228 x 10 28 28-29 dígitos 16 bytes

Teste de igualdade

Como os computadores só podem armazenar números de ponto flutuante aproximadamente, isso causará um comportamento inesperado se você tentar comparar dois números flutuantes.

Por exemplo, a seguinte expressão deve retornar true:

0.3 == 0.1 + 0.1 + 01;Linguagem de código:  C#  ( cs )

Mas em vez disso ele retorna false:

bool result = 0.3 == 0.1 + 0.1 + 01;
Console.WriteLine(result); // falseLinguagem de código:  C#  ( cs )

A razão é que a expressão retorna um valor aproximadamente igual a 0,3, não 0,3. Veja o seguinte:

Console.WriteLine(0.1 + 0.1 + 0.1);Linguagem de código:  C#  ( cs )

Saída:

0.30000000000000004Linguagem de código:  C#  ( cs )

Literais flutuantes

Cada tipo float possui uma forma literal específica. E todos os literais flutuantes podem ter o separador de dígitos ( _) para torná-los mais legíveis.

flutuador

Os literais float têm o sufixo fou F. Por exemplo:

float rate = 5.2F;
float amount = 10_000.5f;Linguagem de código:  C#  ( cs )

dobro

Os literais duplos não têm sufixo. Por exemplo:

double dimension = 3.14
double radius = 1_000.5Linguagem de código:  C#  ( cs )

Ou com o sufixo dou Dassim:

double dimension = 3.14d
double radius = 1_000.5DLinguagem de código:  C#  ( cs )

decimal

Os literais decimais têm mou Msufixo:

decimal amount = 9.99m
decimal tax = 0.08MLinguagem de código:  C#  ( cs )

Conversões

C# converte implicitamente um valor de float em double. No entanto, você pode usar uma conversão explícita para converter um valor de um tipo de ponto flutuante para outro.

Resumo

  • C# usa os tipos float, doublee demicalpara representar números reais.
  • Evite usar o operador de igualdade ==para comparar dois números reais.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *