Boa noite pessoal, gostaria de saber se é possivel eu converter um valor de uma tabela que é float, para um Label que exibiria em formato 0,00 ou 0.00, o importante é ser duas casas decimais depois do . estou passando o codigo para darem uma olhadinha.
int setar = TblDividas.getSelectedRow();
txtIdDiv.setText(TblDividas.getModel().getValueAt(setar, 0).toString());
//exibe o valor inicial da divida
lbValorInicial.setText(TblDividas.getModel().getValueAt(setar, 2).toString());
//atualiza o valor da divida
Só pra finalizar a Label exibe o valor, mas com várias casas depois do ponto
1 curtida
public void converterValor() {
String s;
double d;
DecimalFormat df1 = new DecimalFormat("R$ #,##0.00");
d = Double.parseDouble(campovalor.getText());
s = df1.format(d);
campovalor.setText(s);
}
MauricioLanner:
é possivel eu converter um valor de uma tabela que é float, para um Label que exibiria em formato 0,00 ou 0.00, o importante é ser duas casas decimais depois do .
String texto = String.format("%.2f", valorFloat);
Opa, funcionou muito bem, mas gerou um erro na hora de comprar os valores, não entendi bem o porque.
//metodo que pega o id da divida
private void setarcliente (){
int setar = TblDividas.getSelectedRow();
txtIdDiv.setText(TblDividas.getModel().getValueAt(setar, 0).toString());
//exibe o valor inicial da divida
lbValorInicial.setText(TblDividas.getModel().getValueAt(setar, 2).toString());
//atualiza o valor da divida
float valor_atualizado = (float) (TblDividas.getModel().getValueAt(setar, 2));
Date data_Abertura = (Date) (TblDividas.getModel().getValueAt(setar, 1));
Date data = new Date();
int dias;
float juros = 0;
float multa = (valor_atualizado * 2) / 100;
for (dias = 0; data.after(data_Abertura); dias++) {
data.setDate(data.getDate() - 1);
juros = (valor_atualizado * 0.35f) / 100;
valor_atualizado = valor_atualizado + juros;
}
valor_atualizado = valor_atualizado + multa;
String valor_atualizado_decimal = String.format("%.2f", valor_atualizado);
lbValorFinal.setText(String.valueOf(valor_atualizado_decimal));
}
erro Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “13,86”
Esqueci de por o método de comparação
private void pagar_divida(){
if (Double.parseDouble(lbValorFinal.getText()) == Double.parseDouble(txtVp.getText())){
int confirma = JOptionPane.showConfirmDialog(null, "Tem certeza que deseja pagar essa divida?", "Atenção", JOptionPane.YES_NO_OPTION);
if (confirma == JOptionPane.YES_OPTION) {
String encerrar = "encerrado";
String sql2 = "update divida set status=? where id_divida=?";
try {
pst = conexao.prepareStatement(sql2);
pst.setString(1, encerrar);
pst.setString(2, txtIdDiv.getText());
int apagado = pst.executeUpdate();
if (apagado > 0) {
JOptionPane.showMessageDialog(null, "Divida paga");
//limpa os campos
txtVp.setText(null);
lbValorFinal.setText(null);
lbValorFinal.setText(null);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
}else{
System.out.println("Valor diferente");
}
}
O que fica pegando é exatamento isso
Double.parseDouble(lbValorFinal.getText())
vi aqui no forum que se multiplicar por um pode dar certo, mas não sei como multiplicar dentro do codigo
Quando você faz Double.parseDouble a String recebida deve conter ponto como separador decimal, não vírgula.
Ou seja, tem que trocar o 13,86 por 13.86.
Existe uma forma de converter o ponto para virgula no Double.parseDouble(lbValorFinal.getText()) ?
String entrada = campovalor.getText();
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt", "BR"));
double recebido = (Double) nf.parse(entrada);
//PreparedStatement
pst.setDouble("numero do pst aqui", recebido);
Mas você tem que fazer o contrário, trocar a vírgula pelo ponto pro parseDouble funcionar
String texto = lbValorFinal.getText();
Double valor = Double.parseDouble(texto.replace(',', '.'));
1 curtida