Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/10/2005, 17:54
Avatar de jpunk
jpunk
 
Fecha de Ingreso: octubre-2005
Ubicación: Bogota
Mensajes: 335
Antigüedad: 19 años, 3 meses
Puntos: 0
Error en clase para formato de números de punto flotante.

Hola Alguien me puede ayudar a encontrar un error en esta clase para formato de números de punto flotante.
El error es: missing return statement.

Aquí agrego el código:

Código:


public class FormatoDouble {
	
	public static String toString(double valor, int precision)
	{
		return toString(valor, precision, false);
	}
	
	public static String toString(double valor, int precision, boolean usar_coma)
	{
		boolean cero_derecha;
		double val_abs = Math.abs(valor);  // Convertir a positivo
		
		if(precision < 0)
		{
			precision = -precision;
			cero_derecha = false;
		}
		
		else
		{
			cero_derecha = true;
		}
		
		String signoStr = "";
		
		
		if(valor < 0)
		{
			signoStr = "-";
		}
		
		long digito = (long) Math.floor(val_abs); // da la parte entera
		
		
		String digitoStr = String.valueOf(digito);
		
		if(usar_coma)
		{
			int longDigitoStr = digitoStr.length();
			int indice_dig = (longDigitoStr - 1) % 3;
			
			indice_dig++;
			
			String digitoComaStr = digitoStr.substring(0, indice_dig);
			
			while(indice_dig < longDigitoStr)
			{
				digitoComaStr += "," + digitoStr.substring(indice_dig, indice_dig+3);
				
				indice_dig += 3;
			}
			
			digitoStr = digitoComaStr;
		}
		
		String digitoPrecStr = "";
		
		long digitoPrec = Math.round( (val_abs - digito) * Math.pow(10.0, precision) );
		
		digitoPrecStr = String.valueOf(digitoPrec);
		
		// LLenar con ceros entre el decimal y los digitos de la precision
		String llenarCero = "";
		
		for(int i = 0; i < precision-digitoPrecStr.length(); i++ )
		{
			llenarCero += "0";
		}
		
		digitoPrecStr = llenarCero + digitoPrecStr;
		
		
		if(! cero_derecha)
		{
			int ultimoCero;
			
			for(ultimoCero = digitoPrecStr.length() - 1; ultimoCero >= 0; ultimoCero--)
			{
				if( digitoPrecStr.charAt(ultimoCero) != '0' )
				{
					break;
				}
				
				digitoPrecStr = digitoPrecStr.substring(0, ultimoCero + 1);
			}
			
			if( digitoPrecStr.equals("") )
			{
				return signoStr + digitoStr;
			}
			
			else
			{
				return signoStr + digitoStr + "." + digitoPrecStr;
			}
		}
	}
}