Pesquisar na Comunidade
Showing results for tags 'decimais permitidas'.
Encontrado 1 registro
-
Boa Tarde a todos. Depois de alguns problemas com clientes com o erro "Numero máximo de casas decimais permitidas 2" (esse erro ocorre em varias tags, nesse exemplo usarei a vCarga). Pelos testes que realizei o erro parece acontecer principalmente com valores altos. Alimentava o componente com o valor da tag como no exemplo abaixo: vCarga := 525654.69; O erro ocorre na Unit pcnGerador na procedure wCampo. Trecho retirado da Unit pcnGerador linhas de 847 a 855 case Tipo of tcDe2 : NumeroDecimais := 2; tcDe3 : NumeroDecimais := 3; tcDe4 : NumeroDecimais := 4; tcDe6 : NumeroDecimais := 6; // Incluido por Italo em 30/09/2010 tcDe10: NumeroDecimais := 10; end; //VlrExt := StrToFloat(valor); ConteudoProcessado := FormatFloat('0.0000000000', valor); ---------------------------------------------------------------------------------------------------- Simulando a tag vCarga com o valor usado no exemplo acima: ConteudoProcessado := FormatFloat('0.0000000000', 525654.69); Resultado ConteudoProcessado = '525654,6899999999' Alterando o Código... ConteudoProcessado := FormatFloat('0.00', 525654.69); Resultado ConteudoProcessado = '525654,69' A conclusão é que o FormatFloat não tem o resultado esperado quando tratamos de valores altos sem especificar corretamente as casas decimais, e quando isso acontece o componente da o alerta das casas decimais nas linhas seguintes da procedure "wCampo". Para que esse erro não aconteça a Unit pcnGerador foi alterada deixando o trecho acima da seguinte forma: case Tipo of tcDe2 : begin NumeroDecimais := 2; ConteudoProcessado := FormatFloat('0.00', valor); end; tcDe3 : begin NumeroDecimais := 3; ConteudoProcessado := FormatFloat('0.000', valor); end; tcDe4 : begin NumeroDecimais := 4; ConteudoProcessado := FormatFloat('0.0000', valor); end; tcDe6 : begin NumeroDecimais := 6; // Incluido por Italo em 30/09/2010 ConteudoProcessado := FormatFloat('0.000000', valor); end; tcDe10: begin NumeroDecimais := 10; ConteudoProcessado := FormatFloat('0.0000000000', valor); end; end; Estou compartilhando a informação para que se alguém passar por algo assim saiba como resolver, e caso achem interessante que seja feita a alteração na Unit disponibilizando as alterações para todos os usuarios.
- 3 replies
-
- casas decimais
- numero maximo
- (e 1 mais)