Fórum Text filtra apenas 4 casas decimais #191348
29/10/2003
0
Estou tentando fazer uma form de compras, e no valor unitario existem produtos cujo preco possuem 5, 6 casas decimais.
exemplo - componente X - valor R$ 0,024545
Porém, ao retornar o valor, ele pega apenas 4 casas (0,0245) o que dá diferenca na hora de efetuar o calculo.
Como fazer o text pegar todas as decimais?
Codigo utilizado:
sv_unit := strtofloat(txt_valor.text);
sv_qde := strtoint(txt_qde.text);
sv_total := RoundN((sv_unit * sv_qde),2);
showmessage(floattostr(sv_total));
lbl_total.Caption := FormatFloat(´#0.00´,sv_total);
Obrigado,
André
Matrixkid
Curtir tópico
+ 0Posts
29/10/2003
Bacalhau
Não é melhor fazer showmessage(floattostr(sv_unit)); para ver o que acontece realmente?
Gostei + 0
29/10/2003
Matrixkid
por exemplo, depois q eu entro com o text, ele retorna o valor correto
texto digitado - 0,023232
showmessage(edit1.text) ; /// exibe o valor correto
apos eu transforma-lo em currency, ele quebra e só deixa 4 casas decimais.
eu defini :
var sv_unit: currency;
na hora de converter:
sv_unit := floattostr(edit1.text);
se eu der showmessage, ele irá exibir -- 0,0232 , ou seja , cortou o restante dos decimais.
Gostei + 0
29/10/2003
Bacalhau
Currency-922337203685477.5808.. 922337203685477.5807
Trata-se do intervalo válido para este tipo. Ao que parece as 4 casas são mesmo uma limitação do Currency. Eu não aprofundei muito, nem sei se este intervalo mudou em versões posteriores do Delphi.
Mas se isto que eu disse for válido, tens de mudar de currency para outro tipo
Gostei + 0
29/10/2003
Matrixkid
existe outra forma de fazer calculo com casa decimais sem ser currency?
Gostei + 0
29/10/2003
Bacalhau
O problema é que o comportamento do real (ATENÇÃO: REAL É UM TIPO, NÃO A VOSSA MOEDA!... :lol: ) é esquisito, para não falar outra coisa (perceberam agora a razão do grito lá atrás??).
O real gera imensas casas decimais, sendo que a 4ª (a que te interessa) será um arredondamento das restantes.
Acho que uma pesquisa no help sobre os tipos disponíveis é a melhor coisa. Vais encontrar o tipo que melhor se adequa ao problema
abraço
bacalhau
Gostei + 0
29/10/2003
Matrixkid
realmente, foi só trocar currency por real e o float converteu com todas as casas decimais.... :lol:
só me toquei q real era um tipo qdo vc destacou, eheh... :oops:
iniciante é fogo...
brigadao!!!
Gostei + 0
29/10/2003
Bacalhau
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)