package org.lemsml.jlems.viz.plot;
public final class Formatter {
private Formatter() {
}
public static float trim(double a, int itr) {
double d = 0.0;
if (Math.abs(a) < 1.0e-300) {
d = 0.0;
} else {
double b = Math.abs(a);
double mlt = Math.log(b) / Math.log(10.0) - itr;
int imlt = (int)(mlt + (mlt > 0.0 ? 0.99 : 0.0));
int ib = (int)(b / Math.pow(10.0, imlt) + 0.5);
b = ib * Math.pow(10.0, imlt);
d = (a > 0 ? b : -b);
}
return (float)d;
}
public static String format(double d) {
String ret = null;
if (d > 1.e-3 && d < 10000) {
ret = "xx" + String.format("%.2f", new Double(d));
} else {
ret = String.format("%.2g", new Double(d));
}
return ret;
}
public static String format(double d, double delta) {
double ad = Math.abs(d);
double adelta = Math.abs(delta);
String sret = null;
if (ad < 1.e-10) {
sret = "0.0";
} else {
int nfig = (int)(Math.log (ad / adelta) / 2.3 + 2.);
nfig = (nfig < 2 ? 2 : (nfig > 6 ? 6 : nfig));
if (nfig <= 4 && ad> 1.e-3 && ad < 1.e4) {
sret = String.format("%." + nfig +"f", new Double(d));
} else {
sret = String.format("%." + nfig +"g", new Double(d));
}
}
return sret;
}
}