(Resolvido) Casas Decimais

4 respostas
Michel_M

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:
public static void main(String[] args) throws Exception {

		HoraSegundo h = new HoraSegundo();
		h.transformaHoraSegundo("12:30:30");
		
				
	}
Metodo:
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);	
		

	}

Desde já agradeço a todos pela colaboração!

4 Respostas

ViniGodoy

Ué, está resolvido? E qual foi a solução?

Michel_M

Tinha que ter forçado o tipo...

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;
		

	}

Valeu ai...

ViniGodoy

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.

Michel_M

Ops.
É que eu ia primeiramente só transformar em segundos, ai resolvi transformar em hora msm.
Valeu ViniGodoy…

Criado 9 de janeiro de 2012
Ultima resposta 10 de jan. de 2012
Respostas 4
Participantes 2