Double em notação científica

Opa galera…

meu problema é o seguinte:

  • estou calculando a média aritmética de alguns númerosm, porém o resultado está me complicando um pouco…

o código é:

Double media = (50 + 75 + 100.0 + 90000000) / 4;
System.out.println(media);
//2.250005625E7

O problema é justamente o valor retornado… pelo que entendo… ele retorna em notacao científica… mas como fazer para ter o número de forma padrão? (que no caso seria 22500056.25 !!!

desde já, obrigado a todos!

Você quer imprimir o número em notação de ponto fixo (ou seja, 22500056.25) ? Use o modo formatado.

System.out.printf ("%f%n", media);

tenta ver este tópico:

http://www.guj.com.br/posts/list/35199.java

opa thingol,

valeu ai pela resposta (assim como o samuelm7)!

String.format("%f%n", media); retorna a String correta: 22500056,25

até ai td bem… mas a questão é q vou ter que usar este valor para outras operações matemáticas, e ai qd vou converter para Double… o valor volta a ficar em notacao cientifica…

valeu!

Amigo, não é o número que fica em "notação científica".

Qualquer número - mesmo 0.0 - fica em notação científica, ou em ponto fixo, se você o imprimir adequadamente.

Se você usar o System.out.print ou System.out.println, ele usa uma regrinha padrão que é a seguinte:

  • Se o número for menor que 0,0001 ou maior que 10000000, ele é mostrado em notação científica, senão é mostrado em ponto fixo.
    Então é por isso que "System.out.print" ou "println" não é adequado para você.

Rode o seguinte programa e constate o que eu falei.

class TesteNotacaoCientifica {
    public static void main (String[] args) {
        for (int i = -10; i <= 10; ++i) {
            double d = Math.pow (10, i); 
            System.out.println ("10 elevado a " + i + " = " + d);
            System.out.printf ("10 elevado a %d = %f%n", i, d); 
        }
    }
}

Portanto, não se preocupe se o tal número "fica em notação científica". Ele vai ficar mesmo, se você não tomar cuidado para imprimir. Você tem de usar as funções adequadas para sua aplicação.

BEM… acho q fiz besteira…
estava me preocupando sem necessidade… visto que não há problema em fazer as outras operacoes com os numeros em notacao cientifica…
mas de qq forma valeu ai pela nova informacao agregada do thingol

valeu!

thingol,

aproveitando o tópico, será que tem como eu escrever a notação científica em forma de potenciação??

Consigo apenas com os valores elevados a 1, 2 e 3, como no código abaixo:

String value = "5 x 10\u00B2\u00B3\u00B9";
System.out.println(value);

tem como imprimir um número elevado a: 0,4,5,6,7,8 ou 9??

Fernando

Você olhou a tabela de caracteres da fonte Lucida Console? Ela não tem outros caracteres que não 1, 2 e 3.

Se quiser mostrar isso em uma página HTML ou em um JLabel (não é o seu caso nesse programa que você está escrevendo), você pode usar aqueles truques de usar o tag <sup> .

Thingol,

Valeu pela dica!! tentei com a tag em um jlabele funcionou. Quero ver se irá funcionar agora enviando para o jasperreports…mas em último caso, gero uma imagem e envio a imagem mesmo da notação.

Fernando

Pois é…

apesar de ter conseguido utilizar o JLabel para representar uma notação, não consigo mandar essa representação pro Jasper (fica como string normal, com tag e tudo) e nem gerar uma imagem desse JLabel(também fica com string normal)…alguém tem uma solução??conhece uma api, ou algo parecido?? ou vou ter q partir pra ignorância pintar com Graphics cada uma dessa notação?? :roll: :roll:

Fernando

Hum… se eu quisesse um relatório no Jasper eu iria preferir notação científica (ou de engenharia) mesmo, nada dessas perfumarias de escrever

6,02214179 × 10²³ .

Eu preferiria 6.02214179E23 mesmo.

Na notação de engenharia, os expoentes são sempre múltiplos de 3. Exemplo para a constante de Avogadro:

602.214179E+21

pois é thingol,

dei essa idéia, bem como também representar dessa forma: 10^23…mas não foi aceita a idéia :frowning:

não sei mais o que fazer…

Dica: veja se você tem uma outra fonte instalada no computador que tenha esses dígitos pequenos. Por exemplo, a Arial Unicode MS tem os seguintes caracteres UNICODE disponíveis como superscritos:

⁰¹²³⁴⁵⁶⁷⁸⁹

O código Unicode do ⁰ é \u2070, do ¹ é \u2071, do ² é \u2072, … do ⁹ é \u2079.