Problemas com campos float
Olá possuo no meu banco de dados(interbase) campos float e quando passo atraves do meu front end feito em delphi o valor para esse campos, ele modifica o valor como o seguinte exemplo:
no edit digitei 8,80 e no banco ficou gravado 8,80000019073486
ou no edit 10,4 e no banco ficou 10,3999996185303
no evento onkeypress dos edits coloco esse código para permitir só numeros e uma virgula ou ponto, isso pode gerar isso??
if not(key in[´0´..´9´,´.´,´,´,#8,13]) then
key := 0;
if key in [´,´,´.´] then
key := DecimalSeparator;
if key = DecimalSeparator then
if pos(key,TEdit(Sender).Text) <> 0 then
key := 0;
If Key = 13 Then
SelectNext(ActiveControl, True, True);
como posso resolver isso, desde ja agradeço.....KANIGGIA
no edit digitei 8,80 e no banco ficou gravado 8,80000019073486
ou no edit 10,4 e no banco ficou 10,3999996185303
no evento onkeypress dos edits coloco esse código para permitir só numeros e uma virgula ou ponto, isso pode gerar isso??
if not(key in[´0´..´9´,´.´,´,´,#8,13]) then
key := 0;
if key in [´,´,´.´] then
key := DecimalSeparator;
if key = DecimalSeparator then
if pos(key,TEdit(Sender).Text) <> 0 then
key := 0;
If Key = 13 Then
SelectNext(ActiveControl, True, True);
como posso resolver isso, desde ja agradeço.....KANIGGIA
Kaniggia
Curtidas 0
Respostas
Afarias
14/11/2003
campos float são sucetíveis a ´imprecisões´.
use NUMERIC e defina seu tamanho o menor necessário para determinado campo -- o IB automaticamente definirá o campo com o melhor tipo para ele.
na aplicação dê preferência a usar campos BCD (TBCDField) e veriáveis Currency (principalmente em cálculos montários) -- entretanto, a limitação aqui é:: 4 casas decimais e 20 dígitos significativos.
T+
use NUMERIC e defina seu tamanho o menor necessário para determinado campo -- o IB automaticamente definirá o campo com o melhor tipo para ele.
na aplicação dê preferência a usar campos BCD (TBCDField) e veriáveis Currency (principalmente em cálculos montários) -- entretanto, a limitação aqui é:: 4 casas decimais e 20 dígitos significativos.
T+
GOSTEI 0