Converter 0.000 p/ Double ou Float sem perder digitos

Fórum sobre plataforma Arduino

Moderadores: andre_luis, 51, guest2003, Renie

Converter 0.000 p/ Double ou Float sem perder digitos

Mensagempor brasilma » 15 Mar 2020 19:14

Olá Colegas,

As funções toDouble() e toFloat() convertem uma String arredondando a parte decimal para duas casas.

Ex: "1.346" é convertido para 1.35

Gostaria de manter as três sem arredondamento

Qual é a forma mais eficiente?

Obrigado!
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Converter 0.000 p/ Double ou Float sem perder digitos

Mensagempor eletroinf » 15 Mar 2020 21:21

A função sprintf() faz isso, mas eu não lembro de cabeça a configuração certa. Não sei se é a forma mais eficiente em termos de espaço... pois é necessário adicionar a biblioteca que ela está contida.

https://www.tutorialspoint.com/c_standa ... printf.htm
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Converter 0.000 p/ Double ou Float sem perder digitos

Mensagempor mrgadotti » 16 Mar 2020 08:51

brasilma escreveu:Olá Colegas,

As funções toDouble() e toFloat() convertem uma String arredondando a parte decimal para duas casas.

Ex: "1.346" é convertido para 1.35

Gostaria de manter as três sem arredondamento

Qual é a forma mais eficiente?

Obrigado!


Talvez quebrar o número, como se fosse mostrar em um display de 7 segmentos, remontando ele como float.
Avatar do usuário
mrgadotti
Byte
 
Mensagens: 421
Registrado em: 02 Jun 2010 21:14
Localização: Timbó - SC

Re: Converter 0.000 p/ Double ou Float sem perder digitos

Mensagempor brasilma » 16 Mar 2020 09:18

Vou dar uma verificada se há algum caminho por sprintf! Obrigado!

Quebrar o número e trabalhar é a solução que pensei! Obrigado!
Multiplico a parte superior por 1000 e somo a inferior, na hora das impressões insiro o ponto no local correto.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Converter 0.000 p/ Double ou Float sem perder digitos

Mensagempor brasilma » 16 Mar 2020 19:47

Um grande sorriso, para quem sempre programou em assembly, ao ver uma sintaxe destas funcionar!!! :-) :-) :-)

double recebido2 = (recebido.substring(2, 5).toInt()*1000)+recebido.substring(6, 9).toInt();
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra


Voltar para ARDUINO

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x