Display numbers in scientific notationTag(s): String/Number
JDK1.0.2
public static String toScientific(double num,int places) {
String result="";
String sign="";
double power=(int)(Math.log(num)/Math.log(10));
if(power < 0) power--;
double fraction=num/Math.pow(10,power);
fraction=round(fraction,places);
if(power > 0) sign="+";
result += fraction + "e" + sign + power;
return result;
}
public static double round(double value, int decimalPlace) {
double power_of_ten = 1;
while (decimalPlace-- > 0) power_of_ten *= 10.0;
return Math.round(value * power_of_ten) / power_of_ten;
}
JDK1.2+
A much better way is now in the java.text package :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
}
}
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com