Página 1 de 1

Valores numéricos em Delphi

Enviado: 06 Jan 2012 16:04
por raquelreis
Pessoal Boa Tarde,

Mais um problema estranho.

Tenho uma rotina de importaçã/exportação em Delphi. É o seguinte, preciso pegar valores reais (double) no meu banco, como preço. E como sabem não posso usar Inteiro para este tipo de informação.
Estou definindo a váriável como -> 'x : Double;' e na hora de salvar no banco Interbase faço assim.
qry.fieldbyname('preco').ASFLOAT := x; // x = 19,99
porém no banco ele joga 20,00 e agora?
Tentei usar o ASCURRENCY, nada feito. Alguma dica?

Ah, em outra aplicação funciona. Será o delphi bugado?

Valores numéricos em Delphi

Enviado: 06 Jan 2012 17:00
por Pablo César
Desculpa Raquel, mas acredito que neste fórum não é o ideal para obter muita ajuda com Delphi. Eu sei absolutamente nada de Delphi. Mas procurando na WEB... Aqui este site que aconselha trabalhar com: Decimal, Double, Numeric e em outro sites lí que o float é meio imprevisivel...
http://imastercontroll.blogspot.com/200 ... da-no.html
Veja este outro dá umas dicas:
http://www.activedelphi.com.br/forum/vi ... 3c24f0f363

Valores numéricos em Delphi

Enviado: 06 Jan 2012 17:25
por raquelreis
Vlw mesmo Pablo. Mas já havia visto esses links. Nenhum ajudou ainda no meu problema.
Meu banco tenho PRECO -- NUMERIC(15,4)
e no delphi uso Double.

Valores numéricos em Delphi

Enviado: 06 Jan 2012 17:36
por Pablo César
Sei que é uma gambiarra, mas quem sabe você possa quebra o galho até achar a forma certa.
Tente Trunc(preco) que irá retornar o inteiro e depois some com Frac(preco) que irá retornar a fração em centavos... nossa que salsicho... rsrsr

Em outro site encontrei:
agora tenho um pouquinho de tempo para detalhar... faça isto:

cds_servico.FieldByName('SE_COMISSAO').AsFloat := FormatFloat('###,###,###.00',
q_servico.FieldByName('SE_COMISSAO').AsCurrency);

Valores numéricos em Delphi

Enviado: 09 Jan 2012 13:01
por raquelreis
Pablo, não sei explicar. Mas sexta estava com esse problema.
E hj, segunda não tenho mais. Não usei nada, deixei o código como estava.
A única coisa diferente é que: Faço todas as alterações em um computador, baixei os 2 bancos para minha máquina (atualizar) e executei a rotina. Funcionou!
Mas fica a dica...
Thank's

Valores numéricos em Delphi

Enviado: 09 Jan 2012 14:16
por Pablo César
Ohhh loko meu... (como diz o Faustão) mas lembra que eu disse:
Aqui este site que aconselha trabalhar com: Decimal, Double, Numeric e em outro sites lí que o float é meio imprevisivel...
Sei lá então... rsrs