Sensei: Float-Schreibweise erzwingen

Beitrag lesen

Hallo!

Habe ein kleines formatierungs-technisches Problem.

Und zwar geht es um Achsenbeschriftung in einem Diagramm, wobei diese erst bei Laufzeit "errechnet" werden.

Ich will, dass alle Beschriftungen so aussehen: X.XE-Y also in der Float Schreibweise. Dabei ist es mir egal wo der Punkt steht nur sollen vor dem E 4 Zeichen stehen. und nach dem E soll 1 Zeichen (evtl auch 2) stehen.

Als input bekomme ich doubles.

Das bekomme ich leider nicht hin, da 2.0003 zB wenn man es nach float konvertiert genauso wieder "aussieht". Das sollte eben gerundet werden und nachher so aussehen: 2.0E+0.

Ich habe untenstehende Methode geschrieben die auch schon halbwegs funktioniert. Nur hab ich da jetzt das Problem, dass 20007.5 zB zu 200E+0 wird ... das ist natürlich nicht erwünscht. Es sollte zu 20.E+2 werden.

Ich weiß meine Methode unten ist vielleicht mathematisc stümperhaft aber was besseres ist mir nicht gelungen um die Zahlen möglichst nach meinen Bedürfnissen zu formattieren... Bitte um Hilfe!

Zur Mathode: Bekomme min und max und die Anzahl der Unterteilungen.
zB: min=1, max=4, anz=4
==> StringArray liefert "1.0E","2.0E","3.0E","4.0E"

-----------

public static String[] getLabels (double min, double max, int anz){
String[] sa = new String[anz];
float[] fa = new float[anz];

for (int i=0; i<anz; i++){
  fa[i] = (float)(min+((max-min)/(anz-1))*i);
  sa[i] = Float.toString(fa[i]);
  System.out.println(sa[i]);

if (!(sa[i].indexOf("E")>0)){
   sa[i] = sa[i] + "E+0";
  }
  sa[i] = sa[i].substring(0,3)+sa[i].substring(sa[i].length()-3,sa[i].length());

System.out.println(sa[i]);
}
System.out.println();

return sa;
}

-----------

Danke für eure Hilfe, Sensei