Clipper On Line • Ver Tópico - decimais em pict arredondando!

decimais em pict arredondando!

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

decimais em pict arredondando!

Mensagempor juniorcamilo » 23 Nov 2018 09:09

Bom dia Amigos!!

estou migrando clipper para haurbour! e me deparei com a seguinte fato:

ex.
nDesc := 1.123456789
@ 10,10 get nDesc pict "@E 999.99"
read

dando enter!

no clipper o resultado é nDesc igual 1.123456789
no harbour o resultado é nDesc igual 1.12

por que ?
tem como deixar como no clipper sem modificar a linha?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

decimais em pict arredondando!

Mensagempor JoséQuintas » 23 Nov 2018 09:15

Estranho isso, bug do Clipper ?
Se a picture tem duas decimais, a picture está sendo respeitada.
Só se antes não tinha picture.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

decimais em pict arredondando!

Mensagempor juniorcamilo » 23 Nov 2018 09:19

JoséQuintas escreveu:Só se antes não tinha picture.


ao meu entender exite algo no clipper "um evento" q sabe c foi ou não digitado algo no get!! como só teclou c enter o valor manteve!!
caso digito 1.12 real mente ai pega o valor 1.12!!
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

decimais em pict arredondando!

Mensagempor Kapiaba » 23 Nov 2018 09:49

   SET FIXED ON
    ? 25141251 / 362
    SET DECIMALS TO 10
    ? 214514.214 / 6325
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

decimais em pict arredondando!

Mensagempor JoséQuintas » 23 Nov 2018 10:28

Não tem a ver com a picture, mas com esse SET DECIMALS...

1 / 3 tem um retorno
1 / 3.00000 ou 1 / 3 * 1.000000 tem outro retorno
As casas decimais visíveis variam conforme o cálculo.

Mas isso não está relacionado com PICTURE.
E também não significa que internamente o número seja outro.

No Harbour você vai ter o resultado de acordo com o que você fizer.

Como você explica para o usuário que mostra um desconto na tela e calcula outro com mais decimais?

Pode considerar isso um problema, do valor ser alterado.
mas pode considerar uma solução: o cálculo vai ser feito exatamente com o que está na tela.

Apesar do trabalho extra, acho mais interessante ajustar as pictures.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

decimais em pict arredondando!

Mensagempor Eric.Developer » 10 Abr 2019 23:10

Vocês não devem ter percebido, mas este fato também acontece com o Clipper, não apenas com o Harbour. Acontecerá quando (descubram... :D).
Não considero como bug, mas uma situação inesperada. Se isso irá ou não atrapalhar o sistema, dependerá apenas da fragilidade da codificação.
Para alguém descobrir este comportamento, é na sorte/azar ou na fase de criação de rotinas intrínsecas, como no meu caso.

Mesmo que isso não ocorresse, ainda existe a chance de "run time error" pela mesma fragilidade da codificação, o programador não manter a coesão numérica (casas decimais, cálculos) em toda a rotina, até a gravação na tabela por exemplo.

Outra curiosidade (Clipper/Harbour), se a atribuição da variável numérica vier diretamente do campo, esta estará formatada igual ao campo.
nTaxa1:=CLI->TAXA // N, 4, 1
nTaxa2:=0

@10, 10 get nTaxa1  // digitação máxima: 99.9
@11, 10 get nTaxa2 //  digitação máxima: 9999999999
read


juniorcamilo escreveu:estou migrando clipper para haurbour! e me deparei com a seguinte fato:

ex.
nDesc := 1.123456789
@ 10,10 get nDesc pict "@E 999.99"
read

dando enter!

no clipper o resultado é nDesc igual 1.123456789
no harbour o resultado é nDesc igual 1.12

por que ?
tem como deixar como no clipper sem modificar a linha?
Delphi, SQL, FastReport | Xailer VxH Fivewin Minigui Hwgui [x]Harbour
Contate-me: Desenvolvimentos em geral | Treinamentos
Overview/Download: Xailer / Harbour Ferramenta profissional e mais completa.
Avatar de usuário

Eric.Developer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 31 Ago 2010 22:16
Curtiu: 0 vez
Mens.Curtidas: 8 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google Adsense [Bot] e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro