Página 1 de 1

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

MensagemEnviado: 27 Out 2011 14:07
por daniel.sloczynski
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,

MensagemEnviado: 27 Out 2011 18:10
por Djalma Toledo Rodrigues
Para imprimir converta para ASCII

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

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

DJ

MensagemEnviado: 27 Out 2011 18:47
por andre_luis
Não é o operador "." que faz isso ?

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



+++

MensagemEnviado: 27 Out 2011 19:04
por chrdcv
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.

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

MensagemEnviado: 27 Out 2011 20:34
por Rodrigo_P_A
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

MensagemEnviado: 27 Out 2011 21:46
por guest2003
a = numero / 100
b = numero % 100

print ( a "," b )

Acho que isso revolve seu dilema...

MensagemEnviado: 28 Out 2011 07:09
por daniel.sloczynski
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,

MensagemEnviado: 29 Out 2011 07:31
por andre_luis
Realmente, é a mais simples mesmo, pois nem precisa trabalhar com bibliotecas do C.

+++