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!
Sofri para conseguir fazer isso. Mais deu certo.
Única coisa, é que não interpreta virgula...no caso desomar os valores....Tem que ser ponto.
<scriptlanguage="javascript">functionmoeda(campo,e){varSeparadorDecimal="."varSeparadorMilesimo=""varsep=0;varkey='';vari=j=0;varlen=len2=0;varstrCheck='[telefoneremovido]';varaux=aux2='';varwhichCode=(window.Event)?e.which:e.keyCode;if(whichCode==13)returntrue;key=String.fromCharCode(whichCode);// Valor para o código da Chaveif(strCheck.indexOf(key)==-1)returntrue;// 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);}returnfalse;}
josimarsis
Não existe uma maneira mais exuta em java?
R
rodrigojava1
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
g4j
Não conseguiu com Decimal format?
Tente com:
DecimalFormatdf=newDecimalFormat("###,###.###");
Metaleiro
[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]
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
g4j
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
Não conseguiu com Decimal format?
Tente com:
DecimalFormat df = new DecimalFormat("###,###.###");
???
josimarsis
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?