Boa noite pessoal.
Gostaria de uma ajuda de vcs se for possivel, estou tentando fazer a impressão de um float
mais ele não esta mostrando as casa decimais. Esta sempre arrendondando para menos.
Eu gostaria de mostrar o resultado com suas casas decimais e não ela exata.
Chamada do metodo:
[code]public static void main(String[] args) throws Exception {
HoraSegundo h = new HoraSegundo();
h.transformaHoraSegundo("12:30:30");
} [/code]
Metodo:
[code]public void transformaHora(String Hora) {
int hrs = 0, minu = 0, segun = 0;
float horasegundos = 0.00F;
try {
hrs = Integer.parseInt(Hora.substring(0,2));
minu = Integer.parseInt(Hora.substring(3,5));
segun = Integer.parseInt(Hora.substring(6,8));
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
System.out.println(horasegundos = (((hrs * 3600) + minu * 60) + segun) / 3600);
}[/code]
Desde já agradeço a todos pela colaboração!
Ué, está resolvido? E qual foi a solução?
Tinha que ter forçado o tipo…
[code]public double transformaHora(String Hora) {
int hrs = 0, minu = 0, segun = 0;
double horasegundos = 0;
try {
hrs = Integer.parseInt(Hora.substring(0,2));
minu = Integer.parseInt(Hora.substring(3,5));
segun = Integer.parseInt(Hora.substring(6,8));
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
horasegundos = (double) (((hrs * 3600) + minu * 60) + segun) / 3600;//aqui foi forçado o tipo double
return horasegundos;
}[/code]
Valeu ai…
Outra forma é colocar o .0 nos literais, assim o Java sabe que eles são double:
public double transformaHoraSegundo(String hora) {
try {
int h = Integer.parseInt(hora.substring(0,2));
int m = Integer.parseInt(hora.substring(3,5));
int s = Integer.parseInt(hora.substring(6,8));
return (m * 60.0 + s) / 3600.0 + h;
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
return 0;
}
Achei estranho pois sua resposta está em horas, e não em segundos como o nome da função sugere.
Ops.
É que eu ia primeiramente só transformar em segundos, ai resolvi transformar em hora msm.
Valeu ViniGodoy…