#1 1. Dezember 2008 String double problem Hi liebe RR ler ich hab ne ewig lange zahl 100 mal die 9 dann ne 1 und dann 100 mal ne 0 und dann ne 9 Code: 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 die erstell ich in nem sting wie ist ja egal wandel se dann um in ne double weil ich die wurzel draus zeihen will klappt au und dann geb ich es aus dann kommt aber so ne blöde antwort raus mit der ich nix anfangen kann da kommt 1.0E+101 raus wie bekomm ich des hin das ich des als geschrieben zahl bekomme ??? ach ja die 1 soll variabel eingegeben werden können wie schon programiert ^^ Code: Console.WriteLine("hey meine süße gib die zahl ein do du nach den 9er haben willst:"); double eingabe; eingabe = Convert.ToDouble(Console.ReadLine()); string test = ""; for (int i = 1; i <= 100; i++) { test = test + "9"; } test = test + eingabe; for (int a = 1; a <= 100; a++) { test = test + "0"; } test = test + "9"; double string2; string2 = Convert.ToDouble(test); string2 = Math.Sqrt(string2); test = Convert.ToString(string2); Console.WriteLine(test); Console.ReadKey(); + Multi-Zitat Zitieren
#2 1. Dezember 2008 AW: String double problem Öhm hat die Zahl eine fixe Länge oder is die auch variabel und warum wandelst du die Zahl anschließend wieder in einen String um, um den dann auszugeben? Kannst du die umgewandelte Zahl ausgeben? Ich denke, dass der Fehler von der Doubleumwandlung zur Stringumwandlung liegt, kann aba auch sein das der vorher schon blödsinn macht bei so einer langen Zahl. Also wenn ich das richtig versteh sind das 202 Stellen, ohne Nachkommastellen. Das Double Zahlenformat hat 52 Mantissenbits und 11 Exponentenbit (und ein Vorzeichenbit). d.h. du kannst eine Zahl darstellen, die 4.503.599.627.370.496 (2^52) als Ziffernstellen besitzt und einen Exponenten, der 2048 (2^11) Zahlen darstellen kann. Nachdem du jedoch eine ganze Zahl hast wird dir mit den Standard Zahlenformaten zwangsläufig ein Datenverlust auftreten, da diese Zahl im Double Format nicht darstellbar ist. mfg duddl + Multi-Zitat Zitieren
#3 1. Dezember 2008 AW: String double problem naja dachte wenn ich die wieder zurück in nen string pack wird se komplet angezeiht dem war aber nicht so. jap die zahl hat ne feste länge 100 mal die 9 dann ne variable zahl von 0-9 dann 100 0 und am schluss ne 9 also 202 stellen. also kann ich mir die nicht ausgeben lassen. wenn ich des richtig verstanden hab als dualzahl erhalt ich die ausgabe : 1.0E+101 als string genau die gleiche :/ + Multi-Zitat Zitieren
#4 2. Dezember 2008 AW: String double problem Wenn ich dich richtig verstanden hab, gibt es ja nur 10 Kombinationen (weil nur die Ziffer nach den Neunern variabel is). Das heißt, du kannst dir die Werte vorher berechnen lassen (z. B. hier) und dann in ein String-Array schreiben. Code: string[] sZahlen = new string[10]; sZahlen[0] = "99999...0...09"; sZahlen[1] = "99999...1...09"; ... switch (Console.ReadLine()) { case "0": Console.WriteLine(sZahlen[0]); break; case "1": Console.WriteLine(sZahlen[1]); break; ... Es wird einfach je nach Eingabe die entsprechende Zahl ausgegeben, ohne Berechnung. + Multi-Zitat Zitieren
#5 2. Dezember 2008 AW: String double problem 1.0E+101 entspricht: 1.0 x10^101 Da ist nichts falsch gelaufen! Ebensowenig ist das eine Dualzahl. Du möchtest wohl eine ewig lange Zahl ausgeben lassen, also 101 Stellen. Und da denkt sich die "Intelligenz" des "Compilers", dass das nicht sinnvoll wäre, und du das ganze wohl doch gerundet und gekürzt haben willst. Intern (schau mal per Debug durch) wird da schon der richtige Wert drinnen stehen. Schau mal hier: Strings formatieren mit C# . Das sollte dir helfen. Des Weiteren wird bei einer Ausgabe sowieso jede Zahl in einen String konvertiert! Deshalb ist es (fast) sinnlos, vorher noch die Double-Zahl in einen String zu konvertieren und auf ein anderes Ergebnis zu hoffen. Allerdings würde die Lösung von Gibbon wohl der bessere Weg sein. - - - + Multi-Zitat Zitieren
#6 2. Dezember 2008 AW: String double problem Eventuell wäre das hier eher für den vorhaben geeignet. Im Link ist erklärt, wie man schriftlich Wurzeln zieht, wobei stehts nur einzelne Zahlenteile betrachtet werden und somit die Gesamtlänge der Zahl keine Rolle spielt. Daraus kann man dann einen Algorithmus machen, der dann die Wurzel löst. Natürlich wäre die Zahlenformatierung (wenn möglich geeigneter) + Multi-Zitat Zitieren
#7 6. Dezember 2008 AW: String double problem Das hier könnte dir auch noch weiterhelfen: Algorithmen zur Wurzelberechnung. + Multi-Zitat Zitieren