Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 351 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia a todos,

Estou com um erro bem inusitado aqui e de fácil reprodução. Estou usando o Delphi 11.2.

Se os colegas criarem um simples executável, adicionarem um botão e acrescentar o seguinte código abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var
  valorDouble: Double;
  valorCurrency: Currency;
begin
  valorDouble := 123.99;
  valorCurrency := 123.99;
  if 123.99 > valorDouble then
    ShowMessage(FloatToStr(123.99 - valorDouble));
  if 123.99 > valorCurrency then
    ShowMessage(FloatToStr(123.99 - valorCurrency));
end;

Irão ter o comportamento que está me enlouquecendo. kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

Simplesmente na primeira condição, onde uso a variável do tipo Double, o compilador afirma que 123.99 é maior que valorDouble, que em teoria é 123.99.

image.png.b002b623484519903bce71402f6cc611.png

Se usar a variável do tipo Currency funciona normal.

Já li em alguns tópicos sobre o assunto, dizem que é algo sobre precisão, mas não entendi direito. Para entender melhor tentei extrair o conteúdo da variável valorDouble para visualizar essa tal diferença de precisão, pra mim sempre é exibido que a variável tem o valor 123.99, aí fico perdido ao tentar entender porque somente na subtração o valor é diferente de 123.99, menor, consequentemente entrando na condição acima.

Alguém saberia explicar o porque desse comportamento?

Desde já agradeço a atenção de todos

  • Membros Pro
  • Solution
Postado

Olá a todos,

Achei um tópico, ironicamente meu, de anos atrás onde os amigos já me elucidaram tal mistério:

Abraços a todos

  • Curtir 1
  • Haha 2
  • Este tópico foi criado há 351 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...