Transformação

Bom dia pessoal!

Sou novo por aqui e gostaria de fazer um pergunta.

Tenho uma tabela onde alguma das colunas delas são do tipo float. ao cadastrar elas em um capo de uma jframe, elas estão sendo salva com .0 exemplo: 150 e ela passa após salva para 150.0
como faço para converter esses dados?

é porque como vc falou é do tipo float, no caso float os números tem casas decimal, vc poderia converter em formato String assim:

 public static void main(String[] args) throws Exception {
        //fica como 150.0
        float numero = 150;
        String numeroSemDecimal = String.format("%.0f", numero);
        System.out.println("Número com decimal: " + numero);
        System.out.println("Número sem Decimal: " + numeroSemDecimal);
    }

Saída:

Número com decimal: 150.0
Número sem Decimal: 150

Outra opção passar para Int:

public static void main(String[] args) throws Exception {
        //fica como 150.0
        float numero = 150;
 //ela aproxima o valor de int, exemplo se fosse 150.9 seria 151, 
//ou seja ele arredonda.
        int numeroSemDecimal = Math.round(numero);
        System.out.println(numeroSemDecimal);
 }

Saída:

150

mas no meu caso q já está no banco e sempre salva novos tem q fazer oq?

Bom, para os novos você faz o que o @Jeanderson_Silva sugeriu

Quanto aos que já estão no banco, você pode puxa-los para uma lista e executar o mesmo procedimento em todos, creio que não seja a maneira mais recomendada de se fazer isso, mas é uma solução

1 curtida

é como @Rodrigomarden falou. Como já foram inseridos assim antes, então não tem mais o que fazer! O que vc pode fazer é mudar a forma de exibição para o usuário.

1 curtida

acredito q esse erro é do formato da minha tabela.

private void PreencherTabela() {
try {
modelo.setNumRows(0);
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, pass);
String query1 = “Select id_ct,ORDEM, CDLINHA, TCPERFIL,EQUIPAMENTO, DESCTESTE, TCTESTE, TIPO, ESPEC_MIN, ESPEC_MAX, ESPEC_UNID, ESPEC_TEXTO,REFERENCIA, FREQUENCIA, FREQ_UNID, PRODUTO, ORIGEM, LAB from Cadastro_Testes ORDER BY ORDEM asc”;
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query1);

    while (rs.next()) {
        modelo.addRow(new Object[]{rs.getInt("id_ct"), rs.getString("ORDEM"), rs.getString("CDLINHA"), rs.getString("TCPERFIL"), rs.getString("EQUIPAMENTO"), rs.getString("DESCTESTE"), rs.getString("TCTESTE"), rs.getString("TIPO"), rs.getString("ESPEC_MIN"), rs.getString("ESPEC_MAX"), rs.getString("ESPEC_UNID"), rs.getString("ESPEC_TEXTO"), rs.getString("REFERENCIA"), rs.getString("FREQUENCIA"), rs.getString("FREQ_UNID"), rs.getString("PRODUTO"), rs.getString("ORIGEM"), rs.getString("LAB")});
    }
    CadTPETabela.getColumnModel().getColumn(0).setMinWidth(0);
    CadTPETabela.getColumnModel().getColumn(0).setMaxWidth(0);
    modelo.isCellEditable(modelo.getColumnCount(), modelo.getRowCount());
    CadTPETabela.setModel(modelo);
} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
}

}

pq no banco ele mostra o valor correto.

Então no caso, vc ta falando q no banco de dados o valor fica 150 mas na tabela aparece 150.0?
e caso vc ta usando como modelo um DefaultTableModel, eu recomendo vc ler isto aqui:


Pois no exemplo do post, sua tabela usar para popular o método:

public Object getValueAt(int rowIndex, int columnIndex) {
//pega o produto da linha
Produto p = produtos.get(rowIndex);
 
//verifica qual valor deve ser retornado
if (columnIndex == COL_NOME) {
return p.getNome();
} else if (columnIndex == COL_QUANT) {
return p.getQuant();
}
return "";
}

Ai neste retorno com sua tabela montada, vc poderia escolher a forma que é exibido nela.