[Resolvido] Dúvida mostrar Preços bonitinho

Olá, tenho um site onde mostra varios produtos que são pegos do DB, o preço é Double… então na hora de mostrar ele mostra " 49.4 ", “50.0” queria mostrar “49,40”, “50,00” no caso teria q converter pra string e usar format? como faria isso? estou utilizando struts 2.

Grato!

Desk,

Java dispõe de uma classe chamada NumberFormat que permite a formatação de números em moeda, conforme um determinado país. Se você deseja formatar um double para real faça o seguinte:

      NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt","BR"));
      String valor = nf.format(1234.56789);

Caso você não queira o R$ na frente do número faça o seguinte:

      NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt","BR"));
      String valor = nf.format(1234.56789);

Espero ter sido útil.

Desk,

Seria isso que voce gostaria de ter?

  Double d = 49.4;
		
  NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
  System.out.println(nf.format(d));

Abracos

Olá pessoal, é isso mesmo, porém tem 1 probleminha… estou utilizando struts 2, então não sei como passar pra view (JSP) a tal variavel a ser mostrada… no caso tenho uma action que faz 1 busca do tal produto pelo id e joga numa variavel, então na view mostro por EL os resultados… segue o exemplo:

[code]public class VerLivroAction {
private Long id ;
private Livros livro ;
private String livrete ;

@Action(value="verLivro", results={
		@Result(name="ok", location="/ver-livro.jsp")
})
public String execute() {
	livro = new LivrosDAO().procura(id) ;
	NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt", "BR")) ;
	livrete = nf.format(livro.getPreco()) ;
	return "ok" ;
}



public String getLivrete() {
	return livrete;
}
public Livros getLivro() {
	return livro;
}
public void setId(Long id) {
	this.id = id;
}

}[/code]

<td> ${livro.nome} <br> <font color="blue"> ${livro.autor} </font> <br> R$: <font color="red"> ${livrete} </font>

Porém o livrete não é mostrado :frowning:

@Editado
Bom, consegui mostrar o preço, ao invez de ponto com , pela TL… porém mostra 40,4 ainda… o outro zero nada… segue o codigo:

<fmt:setLocale value="pt_BR"/> R$: <font color="red"> <fmt:formatNumber value="${livro.preco}" /> </font>

No exemplo de vocês entra um 0 ow fica 40,4 tb?

Desk,

Experimente colocar type=“currency” no fmt ou minFractionDigits=“2” se quiser trabalhar apenas com números.

Dê uma olhada em http://www.ibm.com/developerworks/java/library/j-jstl0415/ para mais informações.

[quote=armeniocardoso]Desk,

Experimente colocar type=“currency” no fmt ou minFractionDigits=“2” se quiser trabalhar apenas com números.

Dê uma olhada em http://www.ibm.com/developerworks/java/library/j-jstl0415/ para mais informações.[/quote]

Cara, muito obrigado. Era isso mesmo que eu gostaria de obter como resultado, obrigado!