1

Tengo un problema con la clase Number Format. Necesito recibir un número en Java el cuál es 0.00023, al recibirlo Java lo pasa automáticamente a anotación científica y por lo mi expresión regular impide el avance de este número.

Busqué información para pasar de anotación científica a número decimal y encontré la clase Number Format.

Después de realizar un método para comprobar que la longitud es la deseada, me encontré con el problema de que se puede llegar a saltar la restricción porque si se llega al máximo de números decimales que le especifiques, redondea para que cuadre en tu patrón.

¿Hay alguna forma de hacer que Number Format no pueda redondear?

Aquí dejo un pequeño fragmento del código para que se pueda entender cual es mi problema:

double prueba = 0.00023;
System.out.println("En anotacion: " + prueba);
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(1);
nf.setMaximumFractionDigits(6);
String formato = nf.format(prueba);
if(formato.length() > 7)
    System.out.println("Error");
else
    System.out.println("okey");
  • 3
    Quieres usar expresiones regulares con un número decimal? Vas a hacer cálculos matemáticos? Prueba a tratarlo como un string. – SuperG280 Jun 25 '21 at 11:09
  • 2
    En tu código no aparece ninguna expresión regular. NumberFormat está pensado específicamente para redondear al número de dígitos que tú le indiques, quizás no es lo que estás buscando. Deberías indicarnos cuál sería la condición de descarte de un número exactamente. Eso de la longitud de la cadena no es muy preciso, el rango de números no está claro, ya que depende de la posición del separador decimal. – RubioRic Jun 25 '21 at 11:24
  • ¿Cuál es el formato? – Sal Jun 25 '21 at 12:25

0 Answers0