# Exponentialschreibweise entfernen



## chemicalboy16 (13. August 2009)

Hi Leute,

Ich bin gerade dabei ein Programm für die Verwaltung meiner Mathehausaufgaben zu schreiben ... Da soll alles reinkommen ... von Umrechner bis hinzu Funktionplotter ... und es soll die Rechenwege bzw. Lösungen in einem Log speichern...

Allerdings nervt mich diese exponentielle schreibweise an meinem Umrechner-Tool...

Hat jemand ne Ahnung wie ich diese in normale Zahlen konvertieren kann?
Gibt es dafür eine Klasse?


----------



## MiMi (13. August 2009)

Ich versteh net ganz was du meinst mit 
"Allerdings nervt mir diese exponentielle schreibweise an meinem Umrechner-Tool..."


----------



## chemicalboy16 (13. August 2009)

Also beim Umrechnen spuckt der z.B. für die Zahl 1.000.000, die Zahl 1,0E6 aus.


----------



## vfl_freak (13. August 2009)

Moin,

da meine Glaskugel gerade zur Reparatur ist ;-],
würde ich vorschlagen, dass Du mal den relevanten Codeteil, bei dem Du diese Ergebnisse ausgibst, hier postet ! !

Sonst wird es nur lustiges Rätselraten ..... 

Gruß
Klaus


----------



## chemicalboy16 (13. August 2009)

eigentlich ist das völlig irrelevant ... weil ich hab eigentlich nach einer klasse gefragt die sowas formatiert...
aber naja ...
...
            else if (m_String_FromToKonv2.equals("Fahrenheit")) {
                m_konv = Double.parseDouble(getZiffer);
                // Nutze Formel 9/5 ° C + 32,0
                m_Ergebnis = (9.0 / 5.0 * m_konv) + 32.0;

                m_String_Ergebnis = Double.toString(m_Ergebnis);
                if(m_Ergebnis < -459.67){
                    tf2.setText("Wert unter dem Nullpunt");
                }
                else{
                    tf2.setText(m_String_Ergebnis);
                }

            }
...

wenn ihr den ganzen code haben wollt könnt ihr euch freuen...


----------



## zeja (13. August 2009)

Ein Blick in die API bringt sowas wie die Klasse DecimalFormat zu tage. Schau dir die mal an. Da kannst du alles einstellen was du so brauchst.

Noch ein Hinweis: Vermeide möglichst Unterstriche in Variablennamen. Und ein m_ ist auch eine komische Angewohnheit. Ein this. tut es auch.

Zum umrechnen von Einheiten gibt es ansonsten auch schon fertige Libraries die du benutzen kannst.


----------



## vfl_freak (13. August 2009)

Moin,

versuch es mal mit einem dieser Vartianten, anstelle Deines "Double.parseDouble" :


```
Wandelt Zahl zu String (erste Version ist übersichtlicher, die beiden anderen Versionen können schneller sein).   

String s = "" + myDouble;
String s = String.valueOf( myDouble );
String s = Double.toString( myDouble );
```

Quelle: http://www.torsten-horn.de/techdocs/java-basics.htm#Datentypen

Gruß
Klaus


----------



## chemicalboy16 (13. August 2009)

vielen dank ...
das m_ steht übrigens für member
xD

ja ich weiß ... meine variablen sind merkwürdig ... zu lang und komisch gesetzt
naja...


----------



## chemicalboy16 (13. August 2009)

@vfl freak

warum sollte ich das tun ...
ich will doch schließlich den text aus dem textfeld zu einer zahl konvertieren ... und nicht umgekehrt ...

nächstes mal besser gucken^^

also ich habs jetzt mal so gelöst^^

    public void UseDecimalFormats(){
            f = (DecimalFormat)DecimalFormat.getInstance(Locale.GERMAN);
            fs = f.getDecimalFormatSymbols();
            fs.setDecimalSeparator(',');
            fs.setGroupingSeparator(' ');
            f.setMinimumFractionDigits(1);
            f.setMaximumFractionDigits(5);
            f.setDecimalFormatSymbols(fs);
    }

und dann einfach

 f.format(String s);

und die Tausenderstellen werden durch Leerzeichen gekennzeichnet, ein Komma als Dezimalseperator und reele Zahlen^^ ... oder so ... xD

Am besten leg ich mir noch ne Klasse dafür an, damit ich immer wieder daruaf Zugreifen kann^^

also meine klasse sieht jetzt so aus



```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package xplusy;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

/**
 *
 * @author Administrator
 */
class UseDecimalFormats extends DecimalFormat{

    public DecimalFormatSymbols fs;
    
    @SuppressWarnings("static-access")
        public void UseDecimalFormats(){
            this.getInstance(Locale.GERMAN);
            fs = this.getDecimalFormatSymbols();
            fs.setDecimalSeparator(',');
            fs.setGroupingSeparator(' ');
            this.setMinimumFractionDigits(1);
            this.setMaximumFractionDigits(5);
            this.setDecimalFormatSymbols(fs);
    }

}
```


----------



## vfl_freak (14. August 2009)

chemicalboy16 hat gesagt.:


> warum sollte ich das tun ...
> ich will doch schließlich den text aus dem textfeld zu einer zahl konvertieren ... und nicht umgekehrt ...



aha, und warum gibst Du dann (lt. Deinem zuerst geposteten Codeschnipsel das Ergebnis als String aus?


> m_String_Ergebnis = Double.toString(m_Ergebnis);


Ich hatte vermutet, dass hier eventuell der Hase im Pfeffer liegen könnte ... aber egal, Hauptsache Du hast jetzt eine Lösung fürs Problem gefunden 

Gruß
Klaus


----------



## chemicalboy16 (14. August 2009)

@vfl freak

weil man grundsätzlich keine zahlen ins textfeld schreiben kann. ^^


----------



## vfl_freak (14. August 2009)

Moin,

irgendwie verstehe ich Dein Problem immer weniger  :-(

Was genau meinst Du denn ? ? ? 

Vlt erklärst Du doch mal genau, was Du eigentlich möchtest!
Eingabe als String, dann Konvertierung nach Double, um damit zu rechnen und wieder zu rAusgabe in einen String konvertieren 

Irgendwie erscheint mir das ein bißchen "_von hinten durch die Brust ins Auge_" zu sein ...  

Gruß
Klaus


----------

