Probleme bei Rechenoperationen



  • decimal
    Precision 28-29 siginifcant digits



  • wenn meine variablen allen in double sind muss ich dann einfach decimal davor schreiben oder noch mehr



  • Nein, du mußt (zumindest in dem Teil des Programms, der Probleme bereitet), alle Definitionen "double varname;" ändern in "decimal varname;".



  • Wobei die Präzision nichts über die Anzahl der Stellen einer Zahl aussagt, sondern die Präzision sind die Stellen hinterm Komma. Der größte Wert den Double annehmen kann ist 1.79769313486232e308. Des sind nen paar mehr als 17 Stellen *gg*

    Problem wird eher der Algorithmus sein der nicht berücksichtigt wie double Zahlen intern gespeichert sind.

    Ich frag mich aber grad wozu du bei ner Primfaktorzerlegung Gleitkommzahlen brauchst. Müsste des net auch nur mit Ganzzahlen gehen?



  • Wir berechnen die Zahlen so hier der Code den wir benutzen:

    y=sqrt(n);
    x = ceil(y);
    
    while(z>0){
    
    		i +=1;
    		j=xhochy(x+i,2);
    		j-=n;
    		b= sqrt(j);
    		z = fmod(b,1);
    
    		}
    
    	// errechung von a
    	a = pow(b,2)+n;
    	a = sqrt(a);
    	// erechnung der beiden Primzahlen p und q
    	p = a + b;
    

    n ist hier die eingebene Zahl die aus der Multiplikation von 2 Primzahlen entstanden ist.
    So berechnen wir die eine Primzahl von den beiden. und da brauchen wir double werte. oder haben wir da einen denkfehler drin.



  • Talla schrieb:

    Wobei die Präzision nichts über die Anzahl der Stellen einer Zahl aussagt, sondern die Präzision sind die Stellen hinterm Komma.

    Eben die Präzision sagt etwas über die Anzahl der Stellen aus. Aber nicht die hinterm Komma, sondern insgesamt. Du kannst in Double natürlich fast beliebig große bzw. fast beliebig kleine Zahlen speichern, aber nicht beliebig genau, von daher ist das (sorry) quatsch 😉

    Wenn die Mantisse z.B. 5 Stellen (dezimal) speichern könnte, wären 1.00001 und 1.00002 intern nicht mehr zu unterscheiden (da als 1.0000 gespeichert -> precision 5 digits). 0.00000001001 und 0.00000001002 sind sehr wohl noch zu unterscheiden (da als 1.001 und 1.002 plus Exponent gespeichert -> precision 5 digits 😉 ). Und der Zahl 10000 könntest Du schon nichts mehr hinters Komma hängen.



  • habe decimal davor geschrieben aber dann bekomme ich die Fehlermeldung: nichtdeklarierter Bezeichner. kann man mal ein beispiel hier schreiben wie man decimal als datentyp verwendet





  • Aber da steht was von net darin entwickel ich aber nicht oder ist das egal.



  • Na ja, decimal ist halt ein Datentyp von .Net.
    Und dieses Forum heisst auch "C# und .Net"



  • Ich schlage vor alle Foren zu einem zu verschmelzen, gucken wo sie posten tun die Leute doch eh nicht 🙄


Anmelden zum Antworten