Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format double value in scientific notation

I have a double number like 223.45654543434 and I need to show it like 0.223x10e+2.

How can I do this in Java?

like image 680
Daniel Gomez Rico Avatar asked May 31 '10 16:05

Daniel Gomez Rico


People also ask

How do you double scientific notation?

To multiply two numbers in scientific notation, multiply their coefficients and add their exponents.

How do you format a double value?

Just use %. 2f as the format specifier. This will make the Java printf format a double to two decimal places. /* Code example to print a double to two decimal places with Java printf */ System.

How do you format numbers in scientific notation?

The Scientific format displays a number in exponential notation, replacing part of the number with E+n, in which E (exponent) multiplies the preceding number by 10 to the nth power. For example, a 2-decimal scientific format displays 12345678901 as 1.23E+10, which is 1.23 times 10 to the 10th power.

How do you print double without exponential?

double dexp = 12345678; System. out. println("dexp: "+dexp);


3 Answers

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

results in

    2.235e+02

which is the closest I get.

more info : http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax

like image 179
Peter Tillemans Avatar answered Sep 22 '22 19:09

Peter Tillemans


This answer will save time for the 40k+ people who are googling "java scientific notation."

What does Y mean in %X.YE?

The number between the . and E is the number of decimal places (NOT the significant figures).

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

The String.format method requires you to specify the number of decimal digits to round to. If you need to preserve the exact significance of the original number then you will need a different solution.

What does X mean in %X.YE?

The number between the % and . is the minimum number of characters the string will take up. (this number is not necessary, as shown above the the string will automatically fill if you leave it out)

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
like image 27
Mike S Avatar answered Sep 23 '22 19:09

Mike S


From Display numbers in scientific notation. (Copy/pasting because the page seems to be having issues)


You can display numbers in scientific notation using java.text package. Specifically DecimalFormat class in java.text package can be used for this aim.

The following example shows how to do this:

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
  }
}  
like image 33
Greg Olmstead Avatar answered Sep 21 '22 19:09

Greg Olmstead