2
respostas

Float e Double

Ainda não ficou tão claro para mim a diferença no uso do double e float no C#. Eu entendi que utilizando o float o número de casas após a vírgula saem com mais precisão em relação ao número atribuído na variável. Alguém poderia aprofundar um pouco mais essa diferença?

2 respostas

Rhyann,

Basicamente é o tamanho, mas se você quiser uma dica muito bacana, leia o artigo de Josá Carlos Macoratti e o prróprio site da Microsoft:

===============================================================

.Net - Float(Single), Double e Decimal. Afinal qual devo usar ?

Decidir qual o tipo de ponto flutuante usar vai depender da aplicação, mas aqui estão alguns considerações que podem ajudar a decidir:

  • Qual o tamanho dos números que sua aplicação vai tratar ? Eles estão no extremo, tanto positivo ou negativo ?
  • Qual a precisão que você precisa ter em seus cálculos ? É de sete dígitos ? Dezesseis dígitos ? muito mais que isso ?
  • Você consegue dimensionar o quanto de memória será gasto na utilização do ponto flutuante ?
  • Os números são proveniente de um banco de dados que já especifica o tamanho usado ?

Os tipos de dados FLOAT, DOUBLE e DECIMAL são usados para armazenar números reais até uma certa precisão.

Qual a diferença entre esses tipos então ?

A tabela abaixo compara o intervalo, precisão, maior inteiro e tamanho:

TipoIntervaloPrecisão(Digitos)Maior Inteiro ExatoTamanho
Float1.5x10^-45 / 3.4x10^3872^244 bytes
Double5.0x10^-324 / 1.7x10^30815-162^538 bytes
Decimal1.0x10^-28 / 7.9x10^2828-292^11316 bytes

(continua...)

https://www.macoratti.net/12/12/c_num1.htm

===============================================================

Tipos numéricos de ponto flutuante (Referência de C#)

Artigo - 09/05/2023

palavra-chave/tipo C#Intervalo aproximadoPrecisãoTamanhoTipo .NET
float±1,5 x 10^−45 para ±3,4 x 10^38~6 a 9 dígitos4 bytesSystem.Single
double±5.0 × 10^−324 to ±1.7 × 10^308~15 a 17 dígitos8 bytesSystem.Double
decimal±1,0 x 10^-28 para ±7,9228 x 10^2828 a 29 dígitos16 bytesSystem.Decimal

(continua... )

https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types

===============================================================

[]'s,

Fabio I.

Olá Rhyann, tudo bom?

Deixando uma contribuição também. A diferença entre float e double no C# está relacionada com a precisão dos valores armazenados. O float é um tipo de dados de ponto flutuante de precisão simples, ou seja, ele ocupa 32 bits na memória e pode armazenar valores com até 7 dígitos significativos. Já o double é um tipo de dados de ponto flutuante de precisão dupla, ocupando 64 bits na memória e podendo armazenar valores com até 15 dígitos significativos.

Em outras palavras, o double é mais preciso que o float, mas ocupa mais espaço na memória. Portanto, a escolha entre um e outro vai depender da necessidade do seu programa. Se você precisa de maior precisão nos cálculos, o double é a melhor opção. Por outro lado, se você precisa economizar espaço na memória, o float pode ser uma escolha melhor.

Um exemplo prático seria em um programa que precisa fazer cálculos financeiros com valores muito grandes, onde a precisão é fundamental. Nesse caso, o double seria a melhor escolha. Já em um programa que precisa armazenar muitos valores em uma estrutura de dados, como um array, o float pode ser uma opção mais econômica.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software