Estou com o seguinte problema, tenho uma aplicação que em um dado momento me retorna um tempo em horas na forma de um float, como por exemplo 3.5 horas (3 horas e meia), gostaria de saber como posso fazer para converter estas horas para horas e minutos, como por exemplo de 3.5 para 3:30 já tentei com o que segue abaixo, mas os resultados não são confiáveis
public String converteHora_Minuto(float valorFinalEmHoras){
int inteiro = (int)valorFinalEmHoras;
float decimal = valorFinalEmHoras-inteiro;
int hora = inteiro;
float minutoF = decimal*60;
int minuto=(int)minutoF;
String hora_minuto = hora+":"+minuto;
return hora_minuto;
}
Tenta utilizando a classe Calendar. Aqui um exemplo:
float h = 3.5f;
Calendar cal = new GregorianCalendar();
int minutos = (int) (h * 60);
cal.clear(); // para limpar o campo hora
cal.set(Calendar.MINUTE, minutos);
System.out.println("hora: " + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("minuto: " + cal.get(Calendar.MINUTE));
Edit:
Você também pode exibir a hora e o minuto formatados assim:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String horaFormatada = sdf.format(cal.getTime());
System.out.println(horaFormatada);
No caso, não confiável é pq se por exemplo informo uma hora que deveria me retornar 3:19 ele arredonda e retorna 3:20 e no caso da minha aplicação a precisão é necessária.