Página 1 de 1

Converter 0.000 p/ Double ou Float sem perder digitos

MensagemEnviado: 15 Mar 2020 19:14
por brasilma
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!

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

MensagemEnviado: 15 Mar 2020 21:21
por eletroinf
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

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

MensagemEnviado: 16 Mar 2020 08:51
por mrgadotti
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.

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

MensagemEnviado: 16 Mar 2020 09:18
por brasilma
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.

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

MensagemEnviado: 16 Mar 2020 19:47
por brasilma
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();