[Resolvido] Dúvida mostrar Preços bonitinho

5 respostas
D

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!

5 Respostas

A

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.

A

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

D
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:
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;
	}
}
<td> ${livro.nome} <br> 
					<font color="blue"> ${livro.autor} </font> <br> 
					R$: <font color="red"> ${livrete} </font>

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

@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?

A

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.

D

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.

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

Criado 28 de abril de 2010
Ultima resposta 4 de mai. de 2010
Respostas 5
Participantes 3