Formatação de numeros [RESOLVIDO]

Boa tarde Galera é o seguinte gostaria de saber se tem alguma maneira utilizando o DecimalFormat ou o NumberFormtat pra resolver a seguinte situação eu tenho os seguintes valores em bigDecimal:

1.000
1.35
1.555
1000.55

gostaria que estes respectivos valores fossem convertidos para:

1
1,35
1,555
1.000,55

Gostaria tbm de saber como marcar um post como resolvido!

Grato

Boa tarde,

Sofri para conseguir fazer isso. Mais deu certo.
Única coisa, é que não interpreta virgula...no caso desomar os valores....Tem que ser ponto.

 [code]  <script language="javascript"> 

function moeda(campo, e){

var SeparadorDecimal = "."
var SeparadorMilesimo = ""
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

    if (whichCode == 13) return true;
	          key = String.fromCharCode(whichCode); // Valor para o código da Chave
	     if (strCheck.indexOf(key) == -1) 
	return true; // Chave inválida   
	         len = campo.value.length;
	for(i = 0; i < len; i++)
			   if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != SeparadorDecimal)) break;
			      aux = '';
    for(; i < len; i++)
				   if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
				             aux += key;   len = aux.length;   if (len == 0) campo.value = '';
					     if (len == 1) campo.value = '0'+ SeparadorDecimal + '0' + aux;
						    if (len == 2) campo.value = '0'+ SeparadorDecimal + aux; 
							  if (len > 2) {
							             aux2 = '';
									for (j = 0, i = len - 3; i >= 0; i--) {
									     if (j == 3) {
										        aux2 += SeparadorMilesimo; j = 0; }
												aux2 += aux.charAt(i);
												j++; }
												campo.value = '';
												len2 = aux2.length;
									for (i = len2 - 1; i >= 0; i--)
									            campo.value += aux2.charAt(i);
												campo.value += SeparadorDecimal + aux.substr(len - 2, len);}
									    return false;}

[/code]

Não existe uma maneira mais exuta em java?

se vc estiver usando o java 5(1.5) use o método format da classe String.
Ex: String.format(formatodonúmero,númeroaserformatado).

Espero ter ajudado

Não conseguiu com Decimal format?

Tente com:

		DecimalFormat df = new DecimalFormat("###,###.###");

[color=darkblue]Dá uma olhada nesses links, acho que podem ter as respostas que deseja, sei que são coisas diferentes, mas acredito que o caminho seja : [/color]

NumberFormat nf = NumberFormat.getInstance(Locale.CHINESE); 

nf.format(123.45);

converter um float numa string

Onde fazer conversões? no model, no view ou no controler?

usa o DecimalFormat ou o NumberFormat

Galera acho que não me expressei bem. É o seguinte eu tenho um campo quantidade que no banco é decimal 10,3 dai não queria mostar para o usuario 1.000 queria mostar as casas decimias somente quando elas não fossem zeradas. Sendo assim:
1.000 seria 1
1.550 seria 1,55
1.458 seria 1,458
1000.53 seria 1.000,53

[quote=josimarsis]Galera acho que não me expressei bem. É o seguinte eu tenho um campo quantidade que no banco é decimal 10,3 dai não queria mostar para o usuario 1.000 queria mostar as casas decimias somente quando elas não fossem zeradas. Sendo assim:
1.000 seria 1
1.550 seria 1,55
1.458 seria 1,458
1000.53 seria 1.000,53
[/quote]

Não conseguiu com Decimal format?

Tente com:

DecimalFormat df = new DecimalFormat("###,###.###"); [/quote]

???

Galera deu certo eis aqui o método:

public static String Convert(BigDecimal valor) { DecimalFormat df = null; if (valor.scale() == 2) { df = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR"))); df.setParseBigDecimal(true); // aqui o pulo do gato df.setRoundingMode(RoundingMode.DOWN); df.setMaximumFractionDigits(3); }else{ df = new DecimalFormat("###,###.###"); } return df.format(valor); }

Muito Obrigado! Como marcar meu post como resolvido?

Um exemplo de “forma enxuta”:

[code]
public static void main(String[] args) {

	BigDecimal numero = new BigDecimal(1000.55);
	System.out.println(numero);
	System.out.println("\"Forma enxuta\":");
	System.out.printf("%,.2f", numero.floatValue());

}[/code]

Onde o “,” após o “%” indica que é para ser usado vírgula ao invés de ponto como separador.

Para colocar um topic como resolvido Edite o primeiro post seu adicionando [RESOLVIDO] antes do título do mesmo

PS: Lembrando que se você quiser salvar aquele valor em uma outra variável ao invés de imprimir, você poderia usar String.format