Membros Pro bnobre Postado 5 Janeiro Membros Pro Compartilhar Postado 5 Janeiro 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. 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 More sharing options...
Membros Pro Solution bnobre Postado 5 Janeiro Autor Membros Pro Solution Compartilhar Postado 5 Janeiro 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 1 2 Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Renato Rubinho Postado 5 Janeiro Consultores Compartilhar Postado 5 Janeiro Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts