Tenho um número:
0,0033212
quero que na impressão ele sai como
33212E-02
Falow
Tenho um número:
0,0033212
quero que na impressão ele sai como
33212E-02
Falow
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
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);
}