Transformação

6 respostas
L

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?

6 Respostas

Jeanderson_Silva

é 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
L

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

Rodrigomarden

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

Jeanderson_Silva

é 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.

L

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.

Jeanderson_Silva

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.

Criado 12 de maio de 2017
Ultima resposta 19 de mai. de 2017
Respostas 6
Participantes 3