Pregunta

Tengo un número doble como 223.45654543434 y necesito mostrarlo como 0.223x10e+2.

¿Cómo puedo hacer esto en Java?

¿Fue útil?

Solución 4

Finalmente lo hago con la mano:

public static String parseToCientificNotation(double value) {
        int cont = 0;
        java.text.DecimalFormat DECIMAL_FORMATER = new java.text.DecimalFormat("0.##");
        while (((int) value) != 0) {
            value /= 10;
            cont++;
        }
        return DECIMAL_FORMATER.format(value).replace(",", ".") + " x10^ -" + cont;
}

Otros consejos

    System.out.println(String.format("%6.3e",223.45654543434));

resultados en

    2.235e+02

que es el más cercano consigo.

Más información: http: / /java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax

Display números en notación científica . ( Copiar / pegar porque la página parece estar teniendo problemas )


Se puede mostrar números en notación científica usando el paquete java.text. clase Específicamente DecimalFormat en paquete java.text se puede utilizar para este objetivo.

El siguiente ejemplo muestra cómo hacer esto:

import java.text.*;
import java.math.*;

public class TestScientific {

  public static void main(String args[]) {
     new TestScientific().doit();
  }

  public void doit() {
     NumberFormat formatter = new DecimalFormat();

     int maxinteger = Integer.MAX_VALUE;
     System.out.println(maxinteger);    // 2147483647

     formatter = new DecimalFormat("0.######E0");
     System.out.println(formatter.format(maxinteger)); // 2,147484E9

     formatter = new DecimalFormat("0.#####E0");
     System.out.println(formatter.format(maxinteger)); // 2.14748E9


     int mininteger = Integer.MIN_VALUE;
     System.out.println(mininteger);    // -2147483648

     formatter = new DecimalFormat("0.######E0");
     System.out.println(formatter.format(mininteger)); // -2.147484E9

     formatter = new DecimalFormat("0.#####E0");
     System.out.println(formatter.format(mininteger)); // -2.14748E9

     double d = 0.12345;
     formatter = new DecimalFormat("0.#####E0");
     System.out.println(formatter.format(d)); // 1.2345E-1

     formatter = new DecimalFormat("000000E0");
     System.out.println(formatter.format(d)); // 12345E-6
  }
}  

Esta respuesta va a ahorrar tiempo para los 40k de personas que están buscando en Google + "Java notación científica."

¿Qué significa Y en %X.YE?

El número entre el . y E es el número de lugares decimales (no las cifras significativas).

System.out.println(String.format("%.3E",223.45654543434));
// "2.235E+02"
// rounded to 3 decimal places, 4 total significant figures

El método String.format requiere que se especifique el número de dígitos decimales para redondear a. Si necesita conservar el significado exacto de la cantidad original, entonces se necesita una solución diferente.

¿Qué hace X media en %X.YE?

El número entre el % y . es la número mínimo de caracteres de la cadena tomará. (este número no es necesario, como se muestra por encima de la la cadena llenará automáticamente si se deja fuera )

System.out.println(String.format("%3.3E",223.45654543434));
// "2.235E+02" <---- 9 total characters
System.out.println(String.format("%9.3E",223.45654543434));
// "2.235E+02" <---- 9 total characters
System.out.println(String.format("%12.3E",223.45654543434));
// "   2.235E+02" <---- 12 total characters, 3 spaces
System.out.println(String.format("%12.8E",223.45654543434));
// "2.23456545E+02" <---- 14 total characters
System.out.println(String.format("%16.8E",223.45654543434));
// "  2.23456545E+02"  <---- 16 total characters, 2 spaces
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top