14/10/2005, 17:54
|
| | | 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;
}
}
}
}
|