Como transformar um N° inteiro em decimal
Moderador: Moderadores
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Como transformar um N° inteiro em decimal
Colegas
Estou tentando pegar um n° estraido de um string e transforma-lo em um n° decimal.
Ex:
x:=2010200000296
p:=substr(x,8,5)
o n° achado é pra ficar 000,29 ou 0,29
como faço pra que fique assim???
obg.
Estou tentando pegar um n° estraido de um string e transforma-lo em um n° decimal.
Ex:
x:=2010200000296
p:=substr(x,8,5)
o n° achado é pra ficar 000,29 ou 0,29
como faço pra que fique assim???
obg.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A função SubStr() apenas separa uma parte da string, que continua sendo string. Como a string representa um número inteiro, você deverá convertê-lo para numérico e depois dividí-lo por um múltiplo de 10 para inserir a vírgula (ou ponto) decimal na posição desejada. No seu caso, sendo p sua sub-string "00029", a expressãoVal(p)/100 lhe dará o valor numérico desejado: 0,29.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: Como transformar um N° inteiro em decimal
Tem outra forma também, se seu decimal for SEMPRE com posição FIXA (é claro, impresindível) eu faria assim:Gilberto M Silva escreveu:pegar um n° estraido de um string e transforma-lo em um n° decimal.
Ex:
x:=2010200000296
p:=substr(x,8,5)
o n° achado é pra ficar 000,29 ou 0,29
x:=2010200000296
p:=VAL( substr(x,8,3)+"."+substr(x,11,2) )
Por quê usei o "." (ponto) e não a vírgula. Simplesmente porque o tratamento de NÚMEROS o Clipper faz ao estilo americano, onde o ponto é vírgula para nós (decimais) e onde são vírgulas para os americanos para nós são pontos (milhares). Daí pra frente você faz o que quiser com o número, que ora pode ser transformado em string novamente:
? "Valor -> "+ALLTRIM(TRANSFORM(p,"@E 999.99"))+" <-"
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Companheiros, valeu muito as dicas, usei a do Maligno, pois resolveu, é pra tratar um código de barras de balança. O n° "2 010200 000296" sendo que: 2 010200= 2 é o dígito verificador; 010200= é o código do produto e 000296= é o preço registrado na balança, na prática não precisa usar o ultimo dígito, então cadastrei o código no sistema, quando o caixa passa o produto no leitor, o sistema checa o produto pega o preço do c.de barras com o preço do produto e calcula a quantidade e joga para o cupom fiscal, o ex: do Maligno encaixou 1ª.
)
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho,
Qual balança voce esta usando?
É possivel voce postar o trecho de codigo em que voce le/pega esta informação para nós?
Valeu.
Qual balança voce esta usando?
É possivel voce postar o trecho de codigo em que voce le/pega esta informação para nós?
Valeu.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Filizola
é que cada vez que se pesa um item ela gera um código de barras diferente onde os cinco ultimos digitos é o valor da pesagem. Então eu fiz assim:
SFIR:="2010200 000519"
FIR := SUBSTR(SFIR,1,5)
SELE A (arq.onde estao os dados dos produtos"
SEEK FIR
PREUNI := 0
IF CNCLAMAT <> "001" (classe dos produtos que são pesados na balança)
SEEK SFIR
SPRECO:= PRECO
ELSE
SPRECO:= PRECO
PREUNI:= SUBSTR(SFIR,8,5)
PREUNI:= VAL(PREUNI)/100
BAIXA := PREUNI/SPRECO
ENDIF
@ 07,08 CLEAR TO 07,23
@ 07,10 SAY SFIR
@ 07,28 SAY BAIXA PICT "@R 9999.999"
@ 09,03 SAY CCNOMMAT
@ 11,11 SAY CNANTQTD PICT "@E 999,999.999"
@ 13,17 SAY DATE()
DO WHILE .T.
IF RLOCK()
@ 15,18 GET PRECO PICT "@E 999,999.99"
INKEY(1)
READ
UNLOCK
EXIT
ENDIF
ENDDO
IF PREUNI <> 0 (se preço for redigitado, calcula quantidade vendida)
BAIXA := PREUNI/PRECO
@ 07,28 SAY BAIXA PICT "@R 9999.999"
ENDIF
Essa foi a forma que achei para para funcionar sem problemas, e está funcionando blz.
é que cada vez que se pesa um item ela gera um código de barras diferente onde os cinco ultimos digitos é o valor da pesagem. Então eu fiz assim:
SFIR:="2010200 000519"
FIR := SUBSTR(SFIR,1,5)
SELE A (arq.onde estao os dados dos produtos"
SEEK FIR
PREUNI := 0
IF CNCLAMAT <> "001" (classe dos produtos que são pesados na balança)
SEEK SFIR
SPRECO:= PRECO
ELSE
SPRECO:= PRECO
PREUNI:= SUBSTR(SFIR,8,5)
PREUNI:= VAL(PREUNI)/100
BAIXA := PREUNI/SPRECO
ENDIF
@ 07,08 CLEAR TO 07,23
@ 07,10 SAY SFIR
@ 07,28 SAY BAIXA PICT "@R 9999.999"
@ 09,03 SAY CCNOMMAT
@ 11,11 SAY CNANTQTD PICT "@E 999,999.999"
@ 13,17 SAY DATE()
DO WHILE .T.
IF RLOCK()
@ 15,18 GET PRECO PICT "@E 999,999.99"
INKEY(1)
READ
UNLOCK
EXIT
ENDIF
ENDDO
IF PREUNI <> 0 (se preço for redigitado, calcula quantidade vendida)
BAIXA := PREUNI/PRECO
@ 07,28 SAY BAIXA PICT "@R 9999.999"
ENDIF
Essa foi a forma que achei para para funcionar sem problemas, e está funcionando blz.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Há, a balança não está on line com o sistema, os item pesados são pre cadastrados no sistema, por isso fiz assim.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Eu estou montando um sistema que usa balanças TOLEDO e ECFs Bematech térmicas, e tem um pepino: Arredondamento (balança) versus Truncamento (ECF) de valores (na Bematech matricial não há problema).
Exemplo: código 1663. Banana Caturra KG, R$0,89 por Kg (informações previamente carregadas na balança e no PDV).
Coloquei 696 gramas na balança e ela fez o seguinte:
. calculou 0,696g x R$0,89 = R$0,61944
. arredondou o resultado para R$0,62.
. imprimiu a etiqueta com código 1663, valor R$0,62.
. (código de barras: 2 016630 00062 2)
No PDV, como o código de barras da etiqueta só traz o código de produto e o valor final, é feito o seguinte para poder completar as informações do cupom fiscal:
. procura o código 1663 na sua lista de produtos;
. obtém o preço por Kg (R$0,89) e o nome do produto.
. para obter o peso, faz a conta inversa:
R$0,62 / R$0,89 = 0,69662921..
. como não aceita arredondamento, trunca este valor para 0,696.
. em seguida, faz 0,696 x R$0,89 = 0,61944 e trunca para R$0,61.
. imprime 0,696g x R$,89 = R$0,61 no cupom fiscal...
Tá feita a encrenca: R$0,62 na etiqueta contra R$0,61 no cupom.
Outro problema é o peso para baixa de estoque: neste exemplo, o peso foi o mesmo nas duas pontas - 696 gramas, mas foi coincidência. Certo que eventuais diferenças seriam pequenas, mas acho que deveria haver algum tratamento...
Mais um: cargas passadas às balanças e aos PDVs DURANTE o expediente. Exemplo: o cliente passa na balança às 10:00hs. e pega a etiqueta conforme citado acima. Às 10:05hs., é atualizada a tabela de preços (a banana passa a R$1,50/kg). Às 10:10hs., o cliente passa a etiqueta (original) no caixa e o PDV faz o cálculo com o novo preço:
. R$0,62 / R$1,50 (novo preço) = 0,4133333... (NOVO PESO!)
. valor truncado para 0,413g
. 0,413g x R$1,50 = R$0,6195
. valor truncado para R$0,61
O cliente vai pagar o mesmo valor, mas o estoque vai ser baixado em 413 e não em 696 gramas...
Bem, uma saída talvez seja fazer a balança imprimir o código de barras com o PESO ao invés do PREÇO. Mas pode fazer isso, dar ao cliente uma etiqueta sem preço?
Exemplo: código 1663. Banana Caturra KG, R$0,89 por Kg (informações previamente carregadas na balança e no PDV).
Coloquei 696 gramas na balança e ela fez o seguinte:
. calculou 0,696g x R$0,89 = R$0,61944
. arredondou o resultado para R$0,62.
. imprimiu a etiqueta com código 1663, valor R$0,62.
. (código de barras: 2 016630 00062 2)
No PDV, como o código de barras da etiqueta só traz o código de produto e o valor final, é feito o seguinte para poder completar as informações do cupom fiscal:
. procura o código 1663 na sua lista de produtos;
. obtém o preço por Kg (R$0,89) e o nome do produto.
. para obter o peso, faz a conta inversa:
R$0,62 / R$0,89 = 0,69662921..
. como não aceita arredondamento, trunca este valor para 0,696.
. em seguida, faz 0,696 x R$0,89 = 0,61944 e trunca para R$0,61.
. imprime 0,696g x R$,89 = R$0,61 no cupom fiscal...
Tá feita a encrenca: R$0,62 na etiqueta contra R$0,61 no cupom.
Outro problema é o peso para baixa de estoque: neste exemplo, o peso foi o mesmo nas duas pontas - 696 gramas, mas foi coincidência. Certo que eventuais diferenças seriam pequenas, mas acho que deveria haver algum tratamento...
Mais um: cargas passadas às balanças e aos PDVs DURANTE o expediente. Exemplo: o cliente passa na balança às 10:00hs. e pega a etiqueta conforme citado acima. Às 10:05hs., é atualizada a tabela de preços (a banana passa a R$1,50/kg). Às 10:10hs., o cliente passa a etiqueta (original) no caixa e o PDV faz o cálculo com o novo preço:
. R$0,62 / R$1,50 (novo preço) = 0,4133333... (NOVO PESO!)
. valor truncado para 0,413g
. 0,413g x R$1,50 = R$0,6195
. valor truncado para R$0,61
O cliente vai pagar o mesmo valor, mas o estoque vai ser baixado em 413 e não em 696 gramas...
Bem, uma saída talvez seja fazer a balança imprimir o código de barras com o PESO ao invés do PREÇO. Mas pode fazer isso, dar ao cliente uma etiqueta sem preço?
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Mestre Eolo, Não pode sair a etiqueta sem preço e sem peso, aqui no mercadinho não tem problema quanto ao estoque, pois eles trabalham com quebra de estoque para produtos açougue e horti-fruti, eles tem um percentual pra + ou pra - se extrapolar o limite eles sabem por isso não tem problema agora quanto a diferença de peso no PDV, pois a balança trabalha com uma pesagem de cinco em cinco gramas e o PC calcula de uma em uma. se existe uma forma de conciliar balança PDV não sei, aqui a etiqueta sai o código e os ultimos 5 digitos é o preço.O cliente vai pagar o mesmo valor, mas o estoque vai ser baixado em 413 e não em 696 gramas...
Bem, uma saída talvez seja fazer a balança imprimir o código de barras com o PESO ao invés do PREÇO. Mas pode fazer isso, dar ao cliente uma etiqueta sem preço?
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino

