Formatando números com NumberFormat

9 respostas
rafael.espiritosanto

Olá!

Estou usando o NumberFormat para poder formatar as operações de meu programa.

Só que eu gostaria de que quando enviasse dois números com notação exponencial
o resultado também fosse com a notação exponencial.

String valor1 = "1e+10";
String valor2 = "1e+10";
String resposta = soma(valor1, valor2);

public String soma(String valor1, String valor2) {
     NumberFormat format = NumberFormat.getInstance();
     double v1 = Double.parseDouble(valor1);
     double v2 = Double.parseDouble(valor2);
     double res = v1 + v2;
     return format.format(res);
}

A String de retorno vai ser 20.000.000.000 e eu gostaria que você 2e+10.

Agradeço pela ajuda…
Valeu! :stuck_out_tongue:

9 Respostas

B

Utilize o DecimalFormat

NumberFormat format = new DecimalFormat ( “0.###E0” ) ;

rafaengenharia
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class Testando{ 
String valor1 = "1e+10";  
 String valor2 = "1e+10";  
 String resposta; 
 
 public Testando(){
	 
	 this.resposta = soma(this.valor1, this.valor2);
	 
 }
   
public String soma(String valor1, String valor2) {
	 
      NumberFormat format = new DecimalFormat("0.#E0"); 
      
      double v1 = Double.parseDouble(valor1);  
      double v2 = Double.parseDouble(valor2);  
      double res = v1 + v2;  
      return format.format(res);  
 }
 public static void main(String args[]){
	 Testando x = new Testando();
	 System.out.println(x.resposta);
 }
 }

Dá uma olhada nisso:

http://www.exampledepot.com/egs/java.text/FormatNumExp.html?l=rel

att,

rafael.espiritosanto

Valeu pela ajuda!

Só mais uma dúvida.

Imagina a situação em que eu tenho duas strings representando valores Hexadecimais (1A e 1B por exemplo)

Como poder converter para um número double (ou outro tipo) pra poder realizar operações
básicas (soma, subtração, etc…)

Valeu!

D

Olá a todos.

Em minha aplicação possui uma tabela onde a seleção de informações aparecerão.

Mas o problema é que quando eu pesquiso na tabela, mostra o campo idade não formatado.

Ele é do tipo Float mas eu gostaria que aparecesse com vírgula.

Estou utilizando o seguinte código;

MaskFormatter maskIdade = new MaskFormatter("##,##"); LinhaAtual.addElement(rs.getFloat("idadeGado"));

Não sei o que devo fazer para formatá-lo.
Alguém poderia me ajudar.
Obrigado.

Visualização:

T

“,” representa em máscaras o separador de milhares, não a vírgula. CUIDADO…

Use “#,##0.00” ou coisa parecida.

D

Eu gostaria de saber como faço pra inserir a máscara na linha da tabela.

Andre_Brito

rafael.espiritosanto:
Valeu pela ajuda!

Só mais uma dúvida.

Imagina a situação em que eu tenho duas strings representando valores Hexadecimais (1A e 1B por exemplo)

Como poder converter para um número double (ou outro tipo) pra poder realizar operações
básicas (soma, subtração, etc…)

Valeu!

Se marcar é na base da conversão (“no braço” mesmo).

T
int n = Integer.parseInt ("1A", 16);
D

E o meu problema, alguém sabe o que é?

Criado 25 de março de 2008
Ultima resposta 8 de set. de 2008
Respostas 9
Participantes 6