Trabalhar com ponto flutuante

Primeiramente, boa tarde a todos.

Pessoal, como faço para converter um numero de double ou float para string sem que venha no formato cientifico (com aquele “E” no meio do numero).

No meu caso, se o usuário digitar o número 888888888 ao converte-lo para string eu tenho o valor 8.88888888E8.

Já estudei sobre a classe NumberFormat e ela não existe para J2ME. Pelo menos não consegui encontra-la.

É possível que não exista uma solução “formal” para isto, mais no nível de desespero em que me encontro, até uma solução alternativa vai ser muito bem vinda.

Obrigado!

quem já passou por este problema? os que fez para resolve-lo?

Fala brother, tive um problema parecido pelo que entendi :slight_smile: precisava aredondar um float… aí fiz um metodo para arredondar jah que o J2ME é bem limitado! dá uma olhada no código e vê se te esclarece

[code]public String arrendonda(float valor) {
String valorFloat = Float.toString(valor);

    if( valorFloat.charAt(valorFloat.length()-2) != '.' ){
        int auxFloat = valorFloat.indexOf(".");
        return valorFloat.substring( 0, auxFloat+3 );
    } else {
        return Float.toString(valor);
    }
}[/code]

Qualquer dúvida tamos aê, abraços!

BieL!, mais desta maneira que você propos tbm nao teria problemas com a notação cienttifica…

Por exemplo: e se você pedir para aredondar o numero R$ 888.888.888,569 (oitocentos e oitenta e oito milhoes, oitocentos e oitenta e oito mil, oitocentos e oitenta e oito, quinhentos e sessenta e nove centavos)

DivieX,

Aí realmente temos um problema meu brother! :smiley: pq fiz o método na verdade para “arredondar” juros sem notação científica, porém, você pode melhorar o código para que faça o que tah pensando! é que tô meio sem tempo agora mas vou dar uma pensanda aqui, caso consiga, posta pra galera! abraços!

ok BieL!

Eu tbm estou tentando encontrar uma solução para isto… já fiz muita pesquisa e li muita coisa mais ainda nao consegui encontrar uma maneira de desfazer essa notação cientifica de forma segura.

Se você conseguir encontrar, por favor, não deixe de postar aqui!

obrigado cara… valeu

Cara, estuda notação ciêntífica e cria uam classe que entenda essa notação e faça a conversão.

Pelo pouco que eu sei, eu entendo que, por exemplo, o número 6,6E5 na verdade significa 0,000066, daí já dá para começar a entender alguma coisa (nesse caso, o número 5 depois do “E” indica que tenho 5 números 0 antes do número 66).

Vai estudando, pesquisando no Google que você chega na lógica do negócio e aí é fácil criar a classe para conversão.

Pois é JavaES! Já pensei nisto e até comecei a estuda a notação cientica, mas confeço que faltou um poco de coragem!

Uma coisa que não consegui compreende é o significado da letra!
Será que 6,6E5 tem o mesmo valor que 6,6F5???

[quote=DivieX]Pois é JavaES! Já pensei nisto e até comecei a estuda a notação cientica, mas confeço que faltou um poco de coragem!

Uma coisa que não consegui compreende é o significado da letra!
Será que 6,6E5 tem o mesmo valor que 6,6F5???

[/quote]

Não tem o mesmo significado. Se não me engano está em notação hexadecimal, que vai de 0 à 9 e continua de A à F.

Cara, dá uma olhada na classe MathFP, descobri ela a pouco tempo no blog do siriarah e vi que ela contempla vários métodos para operações aritméticas. Você pode encontrá-la neste link: http://home.comcast.net/~ohommes/MathFP/.

Abraço

A notação científica é na verdade bem simples - qualquer calculadora científica pode lhe mostrar os números em:

Notação científica - 550000 seria representado como 5.5E5 quer dizer 5.5 vezes 10 elevado a 5, ou seja, 5.5 vezes 100000 (5 zeros).

Notação de engenharia - é a mesma coisa que a notação científica, só que os expoentes são sempre múltiplos de 3. Nesse caso, teríamos 550E3 (550 vezes 10 elevado a 3).

Ponto fixo - é a notação comum, ou seja, 550000.

Se você já viu um programa em Fortran, pode ver que existe também a notação 5.5[color=red]F[/color]5 e 5.5[color=red]D[/color]5, além da notação 5.5[color=red]E[/color]5. Essa notação só vale para o Fortran, e para alguns Basics bem antigos. É que no caso de “F” supõe-se que o número é de ponto-flutuante mas em precisão simples, ou de 4 bytes (equivalente em Java a (float) 5.5E5) e o caso “D” supõe que o número é de precisão dupla (8 bytes, equivalente em Java a (double) 5.5E5).

A notação 0x5.5p5 é exclusiva do Java e do C99, e é a representação em hexadecimal de um número de ponto flutuante. Isso é extremamente específico do Java e bem pouco usado, portanto não se preocupe com ela.