Ir para conteúdo
  • Cadastre-se

dev botao

Erro em subtração de dois valores


Ver Solução Respondido por bnobre,

Recommended Posts

  • Membros Pro

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

Link para o comentário
Compartilhar em outros sites

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.