Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia.

Estou com um problema com decimais. (Delphi 7)

Por exemplo, emito uma nota fiscal e o campo valor unitário é impresso com duas casas decimais (variável tipo Currency), mas no debug, sempre tem 4 decimais.

O valor está gravado em banco de dados MySQL , num campo decimal (18,2), exemplo

no banco de dados: ValorUnitário:   18,22

no debug: 18,2201

e no final das contas, a quarta casa decimal tem causado problemas.

mesmo tentando converter 18,2201 para string - com FormatFloat('#0.00',18.22), que obtém "18,22", transformo a string para float e volta a quarta casa decimal.

StrToFloat(18,22) resulta em 18,2201.

Já tentei alterar CurrencyDecimals para 2, mas não faz efeito.

Já tentei todas as funções de arredondamento do ACBr, e tbm não resolve.

As vezes, percebendo o problema o usuário fecha o sistema e abre novamente e some "magicamente" a quarta decimal.

Alguém tem alguma dica ?

[]´s

Edson.

  • 3 semanas depois ...
Postado

Bom dia.

Solução para o problema: Banir uso de Currency !

Alterei todos as variáveis para Real e o problema parou.

O que ocorria:

var PrecoUnitario: Currency;

begin

    PrecoUnitario:=TabelaPrecoUnitario.AsCurrency;   //  o valor gravado no banco MySQL em campo Decimal(12,2) éra : 12.45   mas o valor carregado é 12.4501

end;

 

Solução:

var PrecoUnitario: Real;

begin

    PrecoUnitario:=TabelaPrecoUnitario.Value; ( ou .AsFloat );

end;

 

[]´s

Edson

  • Este tópico foi criado há 2317 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...