Der Wert muss vor dem Casten übrigens aufgerundet werden, und im Falle x==0 muss er explizit auf 1 gesetzt werden.SlaterB hat gesagt.:die Anzahl der Vorkommastellen bestimmt sich vielleicht schneller mit
(int) (Math.log(x)/log10)
int y=x==0 ? 1:(int)Math.ceil(Math.log(x)/Math.log(10));
double x = Math.PI;
int v = (x != 0.0)? (int) (Math.ceil(Math.log(x)/Math.log(10.0))) : 1;
v = 12 - v;
x = Double.parseDouble(String.format("%"+13+"."+v+"f", new Object[] {new Double(x)}).replaceAll(",", "."));