Usar "vírgula" sem float. Tem como?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Usar "vírgula" sem float. Tem como?

Mensagempor daniel.sloczynski » 27 Out 2011 14:07

Buenas senhores!

Estou com uma dúvida.

Tenho uma aplicação na qual eu recebo dados de corrente de um motor.

Os dados vem na forma de três casas decimais. Sendo assim, 120, seria 1,20 A, 320 seria 3,20A e assim sucessivamente.

Eu salvo estes dados em um pendrive, e a função que printa os dados não permite que eu use variaveis do tipo float. Simplesmente se eu der um "print" %f o código até compila mas não mostra nada no lugar onde era pra imprimir o valor da variável.

Tem algum modo de eu colocar essa vírgula usando o %d ou %c ?

Talvez seja algo simples, mas eu estou quebrando o cuca pra descobrir como.

Desde já antecipo agradecimentos.

Um abraço,
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor Djalma Toledo Rodrigues » 27 Out 2011 18:10

Para imprimir converta para ASCII

Ai insira a virgula também em ASCII , 27H

Assim 120 ===> 1,20 ===> 31 27 32 30

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor andre_luis » 27 Out 2011 18:47

Não é o operador "." que faz isso ?

Código: Selecionar todos
printf("%1.2f\n", numero);



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor chrdcv » 27 Out 2011 19:04

andre_teprom escreveu:Não é o operador "." que faz isso ?

Código: Selecionar todos
printf("%1.2f\n", numero);



+++


Não é! O ponto nesse caso é indicar a quantidade de decimais. Para usar vírgula ao invés do ponto, deve-se setar algumas funções em "locale", assim pode-se alterar dentre outras coisas a forma de representação de ponto flutuante.
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Re: Usar "vírgula" sem float. Tem como?

Mensagempor Rodrigo_P_A » 27 Out 2011 20:34

daniel.sloczynski escreveu:Buenas senhores!

Estou com uma dúvida.

Tenho uma aplicação na qual eu recebo dados de corrente de um motor.

Os dados vem na forma de três casas decimais. Sendo assim, 120, seria 1,20 A, 320 seria 3,20A e assim sucessivamente.

Eu salvo estes dados em um pendrive, e a função que printa os dados não permite que eu use variaveis do tipo float. Simplesmente se eu der um "print" %f o código até compila mas não mostra nada no lugar onde era pra imprimir o valor da variável.

Tem algum modo de eu colocar essa vírgula usando o %d ou %c ?

Talvez seja algo simples, mas eu estou quebrando o cuca pra descobrir como.

Desde já antecipo agradecimentos.

Um abraço,


vc num pode usar printf com float, ok, suponho que vc tenha uma rotina que converte um valor qquer para um buffer que contém a string, então é fácil, se for sempre com 3 caracteres faça:

char buffer[4]; // suponho que este buffer tenha o dado com 3 digitos
char buffer2[5];

buffer2[0]=buffer[0];
buffer2[1]=',';
buffer2[2]=buffer[1];
buffer2[3]=buffer[2];
buffer2[4]='\0';

supondo que buffer contenha a string 120 depois de fazer isso, buffer2 vai ter 1,20

é uma das formas de fazer, acho que é a mais fácil já que vc já tem o dado convertido para string
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor guest2003 » 27 Out 2011 21:46

a = numero / 100
b = numero % 100

print ( a "," b )

Acho que isso revolve seu dilema...
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor daniel.sloczynski » 28 Out 2011 07:09

Era algo relativamente simples, se for analisar, mas não dava aquele *plim* na minha mente.

Deve ser pq a cafeteira está estragada e estou em uma crise de abstinência de café... hehehe

Brincadeiras a parte...

Testei os exemplos que os senhores me recomendaram.

O que mais se encaixou na aplicação e que eu achei mais simples:

a = numero / 100
b = numero % 100

print ( a "," b )


Muito obrigado pela ajuda pessoal!

Um abraço,
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor andre_luis » 29 Out 2011 07:31

Realmente, é a mais simples mesmo, pois nem precisa trabalhar com bibliotecas do C.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x