Bom dia

 

   Alguém sabe dizer como eu mostro um valor inteiro com ponto decimal ?

   Sei que provavelmente terei que converter primeiro esse inteiro para string, mas como formato ela?

  Ex :  2085   mostrar como  208.5    ou     733   mostrar como 73.3     Sempre com 1 casa decimal

   Agradeço desde já qualquer ajuda.

 

Exibições: 876

Responder esta

Respostas a este tópico

Bom dia 2C, (se não gosta que te chame pelas iniciais, avise),

qdo solicitar alguma ajuda, descreva com mais informações seu projeto e sua dificuldade.

Por exemplo:  " como eu mostro um valor inteiro com ponto decimal  ?"

Onde vai mostrar? Serial monitor, LCD navegador, etc.

É usando alguma linguagem ? C, basic, java, etc., ou um Software, Excel, Word, Access, etc...

Está usando algum ucontrolador?  Arduino Uno, ESP8266, PIC, etc ..

São muitas possibilidades.

Ajude-nos a ajuda-lo.

RV

 É em um Lcd usando a Ide Arduino.

Boa tarde CC,

1. Defina a variável que guarda o numero como float :   float  minhaVariavel ;

2. Ao enviar para o LCD use  o seguinte formato :  lcd.print(minhaVariavel,X);

      o valor X é a quantidade de casas decimais que vc quer que apareça no LCD depois da virgula.

      1 = 1 digito depois da virgula

RV

Você pode fazer a divisão por 10, salvando num float e então gerando uma string com apenas uma casa decimal. Ou fazer isso tudo de uma só vez.

Exemplo:

int valor = 2085;

Serial.println((float)valor/10,1);

Não me recordo se o LCD possui uma função de print que tenha o parâmetro as casas decimais. Se não me engano, tem parâmetro da base do valor (bin, hexa...)  Se for o caso, faça a conversão antes para String:

Exemplo:

int valor = 2085;

String valor_str =String((float)valor/10,1);

lcd.print(valor_str );

Boa tarde JV, 

a biblioteca LCD do arduino aceita o formato com a quantidade de casas decimais.

Eu uso em alguns projetos.

Ex de um uso que fiz  : float voltagem; // Valor calculado da voltagem

                                       ......................................

                                      lcd.print(voltagem, 2); // Imprime LCD voltagem

RV

  

Eu não me recordava desde detalhe... 

Então no caso poderia só por:   lcd.print((float)valor/10,1)

:D

 Grato ao Mineirin RV e ao João Vitor. Resolveu perfeitamente o caso.

 Uma questão que preciso também é com relação a guardar em memória  um valor utilzando EEPROM.

 Eu sempre guardei valores porém inteiros.

 Eu consigo guardar por exemplo um valor não inteiro? Ex : 723.4
 Eu sei guardar e ler usando EEPROM mas não sei como faria com esse caso.

 Alguém tem um exemplo que possa me passar?

Por nada!

Na EEPROM faz-se a gravação de bytes (0 a 255).

Acredito eu que o mais simples seria tratá-lo como um inteiro mesmo, como você disse já fazer. Ao gravar, grave o valor x10. Ao ler, leia e faça a divisão por 10.

No caso de valores maiores que 255, tratar para armazenar em mais de um byte.

Talvez o RV tenha alguma outra sugestão.

2C, 

vc pode sim guardar valores maiores do que 1 byte e floats na EEPROM.

use o método   EEPROM.put(eeAddress, f); para gravar,

e o método  EEPROM.get( eeAddress, f ); para ler, e o que o endereço se forem varias

variáveis, tem se ser acrescido de 4 em 4 bytes.

Lembre-se que  "f"  tem que ser uma variável do tipo que você quer 

gravar e ler, no seu caso do tipo float.

Mas pode ser int, long etc etc.

ref:      https://www.arduino.cc/en/Reference/EEPROMPut

           https://www.arduino.cc/en/Reference/EEPROMGet

RV

 Bom dia

Agradeço ao Mineirin pela dica do armazenamento em eeprom pelo método put e get , eu usava até então write e  read, o que limitava muito a operação e muito obrigado também ao João Vitor pela solução via float com a chamada   lcd.print((float)valor/10,1)  

 Resolvido 100%!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço