dipps
Goto Top

Formelberechnung in C Sharp

Formelberechnung in C#

Hallo ich möchte gerne eine Formel in C# anwenden doch ich weiss noch nicht wirklich wie.

P=1000*(Var1/Var2)³

ich wess aber nicht wie ich das hoch § in die formel bekomme weiterhin sind Var1 und Var2 double und P soll dann abgeschnitten werden das es ohne Komma anzeigt wer kann mir da am besten Helfen?

Danke schonmal

Content-Key: 89930

Url: https://administrator.de/contentid/89930

Printed on: April 24, 2024 at 22:04 o'clock

Member: Netzheimer
Netzheimer Jun 16, 2008 at 09:44:23 (UTC)
Goto Top
Im C-Sharp-Forum findet man folgenden Link: Hochzahl für einen Taschenrechner programmieren. Das könnte helfen, da auch das Arbeiten mit negativen Zahlen abgedeckt ist.
Member: Dipps
Dipps Jun 16, 2008 at 09:54:56 (UTC)
Goto Top
das mit dem hoch habe ich aber noch nicht wirklich hinbekommen da steht ja man soll mit ^3 arbeiten doch dazu muss ich ja mit float zahlen arbeiten wo aber auch wieder keine komma zahlen gehen also gibt es nicht eine bessere lösung
Member: AndreasHoster
AndreasHoster Jun 16, 2008 at 10:18:25 (UTC)
Goto Top
Bin zwar kein C# programmierer, aber schau mal ob es eine Funktion Power gibt.
Ansonsten einfach 1000*(Var1/Var2)*(Var1/Var2)*(Var1/Var2) nehmen, ist mathematisch ja dasselbe.
Member: -Ohforf
-Ohforf Jun 19, 2008 at 11:53:17 (UTC)
Goto Top
float fltZahl = 0.5f; //Diese Zahl...
float fltHochzahl = 2; //... hoch diese Zahl

Math.Pow(fltZahl, fltHochzahl);

gibt manchmal ganz witzige ergebnisse,
wie z.B.:

0,1² = 0,0100000002980232
während
0,5² = 0,25

naja, ich trau dieser math klasse eh nicht über den weg.
ich hab mal eine eigene methode geschrieben, übernehme aber keine haftung ;)

private void button1_Click_1(object sender, EventArgs e)
{
    //setze variable 1
    float fltOne = 0;

    //setze variable 2
    float fltTwo = 0;

    //setzte variable für ergebniss, kann durch float ersetzt werden
    string strErgebnissPOW = null;

    //setzte variable für ergebniss, kann durch float ersetzt werden
    string strErgebnissEIG = null;

    try
    {
        //konvertiere den string aus tbxEins zu single und fülle damit fltOne
        fltOne = Convert.ToSingle(tbxEins.Text);

        //konvertiere den string aus tbxZwei zu single und fülle damit fltTwo
        fltTwo = Convert.ToSingle(tbxZwei.Text);

        //rechnen mit Math.Pow, wandle ergebniss von float nach string um
        strErgebnissPOW = Math.Pow(fltOne, fltTwo).ToString();

        //rechnen mit eigener methode, wandle ergebniss von float nach string um
        strErgebnissEIG = fltHochzahl(fltOne, fltTwo).ToString();

        //gebe ergebniss von Math.Pow aus:
        MessageBox.Show("Methode 1: " + fltOne.ToString() + " hoch " + fltTwo.ToString() + " = " + strErgebnissPOW, "Methode 1 (Math.Pow)");  
        //gebe ergebniss der eigenen methode aus:
        MessageBox.Show("Methode 2: " + fltOne.ToString() + " hoch " + fltTwo.ToString() + " = " + strErgebnissEIG, "Methode 2 (Selbstgebaut)");   
    }
    //fange ausnahmefehler ab
    catch (Exception ex)
    {
        //zeige an was schief läuft
        MessageBox.Show("Ausnahmefehler aufgetreten:\n\n" + ex.ToString());  
    }

}

private float fltHochzahl(float fltDies, float fltHochDas)
{
    //definiere variable für das ergebniss
    float fltErgebniss = fltDies;

    //prüfe ob fltDies & fltHochDas nicht 0 sind
    if (fltDies != 0 && fltHochDas != 0)
    {
        //beginne schleife (definiere i = hochzahl; solange loopen bis i = 1; i--
        for (float i = fltHochDas; i > 1; i--)
        {
            //ergebniss = ergebniss * dies
            fltErgebniss = fltErgebniss * fltDies; 
        }

        //geb das ergebniss der loop zurück
        return fltErgebniss; 
        
    }
    //wenn 0 hoch X = 0, geb 0 zurück
    else if (fltHochDas != 0 && fltDies == 0)
    {
        return 0;
    }
    //wenn die zahl hoch 0 gerechnet wird, geb 1 zurück
    else if (fltHochDas == 0)
    {
        return 1;
    }
    //ist notwendig, das alle pfade einen rückgabewert haben
    else
    {
        return 0;
    }
}

blargh, nerviges kommentieren, hoffe es leuchtet ein.

EDIT:
Kommentare ind die zeile VOR dem code gesetzt,
minor bugfix ;)
Member: Dipps
Dipps Jun 20, 2008 at 04:47:33 (UTC)
Goto Top
Vielen Dank für deine Hilfe jeztz funktioniert es auch so wie s sein soll danke
Member: -Ohforf
-Ohforf Jun 21, 2008 at 18:48:50 (UTC)
Goto Top
bitte thema als gelöst makieren:

How can I mark a post as solved?
Member: -Ohforf
-Ohforf Jun 23, 2008 at 17:40:49 (UTC)
Goto Top
ACHTUNG: Bugfix vom 23.06.08

mathematisches problem in zeile 63,
tausch das mal gegen

else if (fltHochDas != 0 && fltDies == 0)
aus.

weil 0^0 soll ja laut angeblich auch 1 sein.

hab es oben auch schon korregiert