Conversão de dados, como proceder?

Alguém sabe me dizer como faço para acrescentar mais um dado para conversão nesse código?
No caso eu estou transformandoESPEC_MIN de float para Double. Queria transformar também a ESPEC_MAX

while (rs.next()) 
{
	float dx = rs.getFloat("ESPEC_MIN");
	if (dx == Math.rint(dx)) 
	{
		int dx2 = (int) dx;
		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"), 
								   dx2, 
								   rs.getString("ESPEC_MAX"), 
								   rs.getString("ESPEC_UNID"), 
								   rs.getString("ESPEC_TEXTO"), 
								   rs.getString("REFERENCIA"), 
								   rs.getInt("FREQUENCIA"), 
								   rs.getString("FREQ_UNID"), 
								   rs.getString("PRODUTO"), 
								   rs.getString("ORIGEM"), 
								   rs.getString("LAB")});
	} 
	else 
	{
		double dx2 = dx;
		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"), 
								   dx2, 
								   rs.getString("ESPEC_MAX"), 
								   rs.getString("ESPEC_UNID"), 
								   rs.getString("ESPEC_TEXTO"), 
								   rs.getString("REFERENCIA"), 
								   rs.getInt("FREQUENCIA"), 
								   rs.getString("FREQ_UNID"), 
								   rs.getString("PRODUTO"), 
								   rs.getString("ORIGEM"), 
								   rs.getString("LAB")});
	}
}

Observações:
1 - O título da postagem não ajuda em nada.
2 - Creio que a consulta sql esta correta pois dentro do if vc faz a adição do valor retornado pelo espec_max em modelo.addRow(…);
Assim, se a consulta esta correta, basta repetir o que voce fez, e alterar a condição if de acordo com sua necessidade, pois é desconhecida.
3 - Seria interessante antes você ter esclarecido que a variável rs é um Result Set decorrente de uma sentença sql, pois poderia ser uma classe que você criou com métodos a seu entendimento.

Então veja uma codificação semelhante ao que aparentemente você está solicitando:

//rs = resultSet de gerado por uma sentença sql
while (rs.next()) {
float dx = rs.getFloat(“ESPEC_MIN”);
float especMax = rs.getFloat(“ESPEC_MAX”);//
if (dx == Math.rint(dx) || especMax == Math.rint(especMax)) {
int dx2 = (int) dx;
//modelo.addRow(new Object[]{informarSeusObjetos});
} else {
double dx2 = dx;
//modelo.addRow(new Object[]{informarSeusObjetos});
}
}

Por fim:
Você não transformou ESPEC_MIN de float para double, o que foi realizado na verdade é uma comparação dentro do if, para saber se um número do tipo float tem seu equivalente em inteiro, não foi uma conversão e sim uma comparação.
Na linha int dx2 = (int) dx; ocorre uma conversão, mas é de float para int e não para double.
Em resumo, na sua condificação a condição if quer apenas o valor de dx que tenha seu correspondente em inteiro. XD

Fiz as alterações em que você me indicou, mas mesmo assim apenas o ESPEC_MIN esta retornando o valor corretamente. segue o código completo para vê se você possa me dar mais uma orientação.

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()) {
        float dx = rs.getFloat("ESPEC_MIN");
        float especMax = rs.getFloat("ESPEC_MAX");//
        if (dx == Math.rint(dx) || especMax == Math.rint(especMax)) {
            int dx2 = (int) dx;
            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"),
                dx2,
                rs.getString("ESPEC_MAX"),
                rs.getString("ESPEC_UNID"),
                rs.getString("ESPEC_TEXTO"),
                rs.getString("REFERENCIA"),
                rs.getInt("FREQUENCIA"),
                rs.getString("FREQ_UNID"),
                rs.getString("PRODUTO"),
                rs.getString("ORIGEM"),
                rs.getString("LAB")});
        } else {
            double dx2 = dx;
            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"),
                dx2,
                rs.getString("ESPEC_MAX"),
                rs.getString("ESPEC_UNID"),
                rs.getString("ESPEC_TEXTO"),
                rs.getString("REFERENCIA"),
                rs.getInt("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);
}

}

Se o ESPEC_MAX retorna 0 a coluna espec_max está vazia no banco de dados, ou não há inteiros equivalentes.

Teste esta codificação a seguir:

while (rs.next()) {
float dx = rs.getFloat(“ESPEC_MIN”);
float especMax = rs.getFloat(“ESPEC_MAX”);//
if (dx == Math.rint(dx) || especMax == Math.rint(especMax)) {
System.out.println(rs.getInt(“id”) + " " + ((int) dx) + " " + (int) especMax);
} else {
double dx2 = dx;
}
}

Eu criei uma table teste e retornou os dados normalmente.
Veja no banco de dados a coluna espec_max, acho que ela esta vazia, ou não possui valores inteiros, ai é só povoar as colunas e tentar novamente.
É so fazer select espec_max from sua_table;

Fiz um post anterior pra consulta de uma olhada.
O problema é no banco de dados, a tabela não esta com a coluna espec_max devidamente preenchida.
Teste -> select espec_max from sua_table.
O retorno será vazio ou não há float que gere um inteiro (ex. 7.0).
Use este while abaixo com pequenas melhorias:

while (rs.next()) {
float dx = rs.getFloat(“ESPEC_MIN”);
float especMax = rs.getFloat(“ESPEC_MAX”);//
if (dx == Math.rint(dx) || especMax == Math.rint(especMax)) {
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.getInt(“ESPEC_MIN”),//o rs.getInt vai economizar linhas pois a validação foi feita no if
rs.getInt(“ESPEC_MAX”),//o rs.getInt vai economizar linhas pois a validação foi feita no if
rs.getString(“ESPEC_UNID”),
rs.getString(“ESPEC_TEXTO”),
rs.getString(“REFERENCIA”),
rs.getInt(“FREQUENCIA”),
rs.getString(“FREQ_UNID”),
rs.getString(“PRODUTO”),
rs.getString(“ORIGEM”),
rs.getString(“LAB”)});
} else {
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.getInt(“ESPEC_MIN”),//o rs.getInt vai economizar linhas pois a validação foi feita no if
rs.getInt(“ESPEC_MAX”),//o rs.getInt vai economizar linhas pois a validação foi feita no if
rs.getString(“ESPEC_UNID”),
rs.getString(“ESPEC_TEXTO”),
rs.getString(“REFERENCIA”),
rs.getInt(“FREQUENCIA”),
rs.getString(“FREQ_UNID”),
rs.getString(“PRODUTO”),
rs.getString(“ORIGEM”),
rs.getString(“LAB”)});
}
}

Dessa maneira que você me disse deu certo, mas ele não está me retornando valores com 400.5…
Tenho alguns teste que preciso que retorne com “,”

Addler, fiz alguns testes aqui e deu certo esse código, mas oq acontece… quando eu faço alteração 150.5 no MIN e 160.5 no MAX… ele altera normalmente. Mas se eu fizer só em 1 que no caso ou no MIN ou no MAX, ele não salva com a alteração.

OBS: ele só está salvando com a " , ", quando eu faço alteração nos 2

while (rs.next()) {
                float dx = rs.getFloat("ESPEC_MIN");
                float especMax = rs.getFloat("ESPEC_MAX");//
                if (dx == Math.rint(dx) || especMax == Math.rint(especMax)) {
                    int dx2 = (int) dx;
                    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"),
                        dx2,
                        dx2,
                        rs.getString("ESPEC_UNID"),
                        rs.getString("ESPEC_TEXTO"),
                        rs.getString("REFERENCIA"),
                        rs.getInt("FREQUENCIA"),
                        rs.getString("FREQ_UNID"),
                        rs.getString("PRODUTO"),
                        rs.getString("ORIGEM"),
                        rs.getString("LAB")});
                } else {
                    double dx2 = dx;
                    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"),
                        dx2,
                        dx2,
                        rs.getString("ESPEC_UNID"),
                        rs.getString("ESPEC_TEXTO"),
                        rs.getString("REFERENCIA"),
                        rs.getInt("FREQUENCIA"),
                        rs.getString("FREQ_UNID"),
                        rs.getString("PRODUTO"),
                        rs.getString("ORIGEM"),
                        rs.getString("LAB")});
                }
            }

Vc vai precisar modificar o if para atender a sua necessidade.
Veja a sequência de if dentro do while, está pegando tudo, assim você deve remover o if que não precisar:

while (rs.next()) {
float dx = rs.getFloat(“ESPEC_MIN”);
float especMax = rs.getFloat(“ESPEC_MAX”);//
String sMin, sMax;
//Todas as combinações possiveis para este caso
//pega quando min e max são inteiros
if (dx == Math.rint(dx) && especMax == Math.rint(especMax)) {
sMin = (int) dx + “”;
sMax = (int) especMax + “”;
//pega quando somente o min for inteiro
} else if (dx == Math.rint(dx)) {
sMin = (int) dx + “”;
sMax = especMax + “”;
//pega somente quando o max for inteiro
} else if (especMax == Math.rint(especMax)) {
sMin = dx + “”;
sMax = (int) especMax + “”;
//pega se nenhum dos dois for inteiro
} else {
sMin = dx + “”;
sMax = especMax + “”;
}
//considerando a situação atual e a tautologia, não tem que chamar modelo.addRow(…) dentro do if
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”),
sMin,//promova melhorias que identificar
sMax,//o rs.getInt vai economizar linhas pois a validação foi feita no if
rs.getString(“ESPEC_UNID”),
rs.getString(“ESPEC_TEXTO”),
rs.getString(“REFERENCIA”),
rs.getInt(“FREQUENCIA”),
rs.getString(“FREQ_UNID”),
rs.getString(“PRODUTO”),
rs.getString(“ORIGEM”),
rs.getString(“LAB”)});
}

1 curtida

Estava precisando de algo parecido e me ajudou muito. aqui deu certo!