Fórum Problemas com campo tipo Float (Urgente) #38229
22/08/2003
0
Estou gravando em uma tabela od dados de referência de uma cotação, de um sistema de compras, dentro do Delphi eu gravo usando o formatfloat, sendo que o formato é ´0.00´, com isso ele deveria somente colocar dois dígitos depois da virgula ou ponto, mas quando eu gravo no interbase ele joga 18 digitos, queria saber como faço para gravar somente 2 casas depois da vírgula.
Sem mais
Obrigado
Cabelo
Cabelo
Curtir tópico
+ 0Posts
22/08/2003
Afarias
Se for qualquer tipo numérico (NUMERIC, DECIMAL ou FLOAT) vc não pode definir o número de casas ... afinal é um número!!
O número de casas decimais é só uma formatação e deve ser feita no cliente.
E, evite utilizar campos FLOAT -- dê preferência ao NUMERIC (ou DECIMAL) para obter maior precisão dos números, ex:
NUMERIC(10,2)
T+
Gostei + 0
26/08/2003
Lucianoko
Tenho um campo Numeric(6,2) no IB 6.5 que se refere ao custo de um item da NF.
Acontece que eu digito por exemplo: 13,15 e ao fazer a conta (multiplicar custo X quantidade) ele utiliza o seguinte numero 13,156666667.
Isto da problema no arredondamento e da diferença de centavo.
Eu ´resolvi´ o problema usando TabelaCampo.AsCurrency no lugar do AsFloat. E formatando as casas decimais com FormatFloat.
Se tiverem outra solução melhor não deixem de responder.
T+
Gostei + 0
26/08/2003
Luiz.claudio.vieira
Gostei + 0
26/08/2003
Afarias
|numeric 10,2 para um float?
Campos FLOAT devem ser evitados quando é importante ´precisão´ -- valores que envolverão cálculos, financeiros.
campos numeric (dependendo do tamanho definido) possuem uma representação interna ´percisa´.
T+
Gostei + 0
27/08/2003
Luiz.claudio.vieira
Atenciosamente
Luiz Claudio V. Santos
Gostei + 0
27/08/2003
Afarias
onde::
X é a PRECISÃO (quantidade total de dígitos que o número terá)
Y é a ESCALA (quantidade de dígitos reservados para casas decimais)
X pode ser qualquer valor entre 1 e 18 e Y deve ser um valor menor ou igual a X
Ex:
Numeric (10, 2) --> 12345678.00
Numeric (8, 4) --> 1234.0000
Dependendo da PRECISÃO (X) o IB escolhe uma representação interna diferente (q melhor se adeque) q pode ser um tipo inteiro ou ponto-flutuante com tamanhos 16, 32 ou 64 bits
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)