Formatar saida de ponto flutuante

3 respostas
W

Tenho um número:
0,0033212

quero que na impressão ele sai como

33212E-02

Falow

3 Respostas

S

Crie um objeto da classe java.text.NumberFormat, instanciada a partir de java.text.DecimalFormat, para criar um formato desejado, como “00000E00”.
O problema é que, se não quiser peder precisão, terá que informar a mesma quantidade de “zeros” à esquerda do “E” dos digitos significativos - no seu exemplo, 5 - 33212.

Porém, 0,0033212 não é igual a 33212E-02

33212E-02 equivale, em notação científica a 33212 * (10 ^ -02), que corresponde a 33,212!

spier

_

hehe
soh uma observaçao

33212 * ( 10 ^ -02) não é notaçao cientifica.

é um numero expresso em potencia de dez.

notaçao cientifica o numero antes do E precisa necessariamente estar entre 1 e 10.

:PP

W

Como estava precisando rápido, resolvi fazer eu mesmo. O Meu problema era o seguinte: Tinha que escrever o resultado de uma divisão em um arquivo texto, o número estava saindo assim:
0,000333215613
eu precisava do seguinte padrão de saída
3,332156e-04

O algoritomo ficou meio sujo, mas resolveu, agora só vou incrementar com um arredondamento mais preciso do último dígito.

lá vai:
public FormataFloat() {
    }
    
    public String Formatar(String numero) {
        String texto=numero+"000000000000000-";
        String retorno="";
        String aux,e;
        int in=2,fn=3;
        int contCasas=0;
        aux = texto.substring(0,1);
        if (aux.equals("0")){
            while (aux.equals("0")){
                aux = texto.substring(in++,fn++);
                contCasas++;
                
             }
        
            if (aux.equals("-")){
                retorno="0.000000e+00";
            }
            else {
                if (contCasas<10){
                    e="e-0"+contCasas;
                }
                else{
                    e="e-"+contCasas;
                }
                
                retorno=""+aux+"."+texto.substring(in,fn+5)+e;    
            }
        }
        else {
            while (!aux.equals(".")){
                aux = texto.substring(in++,fn++);
                contCasas++;
                if (aux.equals("-")){
                    break;
                }
             }
            if (aux.equals("-")){
                retorno=texto.substring(0,contCasas-14)+"e00";    
            }
            else {
                aux = texto.substring(in-2,fn-2);
                if (contCasas<10){
                    e="e+0"+(contCasas);
                }
                else{
                    e="e+"+(contCasas);
                }
                
                if (contCasas<7){
                String aux2 = texto.substring(0,contCasas+1)+texto.substring(contCasas+2,contCasas+10);
                aux=aux2.substring(0,1);
                retorno=""+aux+"."+aux2.substring(1,7)+e;    
               }
                else{
                String aux2 = texto.substring(0,contCasas+4);
                retorno=""+aux2+"e+00";    
                }
            }
        }
        
        return(retorno);
        
    }
Criado 11 de outubro de 2004
Ultima resposta 12 de out. de 2004
Respostas 3
Participantes 3