Problemas com campo tipo Float (Urgente)
Caro Amigo
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
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
Curtidas 0
Respostas
Afarias
22/08/2003
Qual o tipo de dados no Interbase??
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+
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
Lucianoko
22/08/2003
Cara, eu tenho o mesmo problema que você.
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+
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
Luiz.claudio.vieira
22/08/2003
Pq nao se deve usar campos do tipo float??? Qual a diferenca entre numeric 10,2 para um float?
GOSTEI 0
Afarias
22/08/2003
|Pq nao se deve usar campos do tipo float??? Qual a diferenca entre
|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+
|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
Luiz.claudio.vieira
22/08/2003
Como seu que pra minha necessidade e interessante usar um 10,2 no lugar de um 15,2, o que significa estes números??
Atenciosamente
Luiz Claudio V. Santos
Atenciosamente
Luiz Claudio V. Santos
GOSTEI 0
Afarias
22/08/2003
NUMERIC (X, Y)
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+
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