1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Tipps und Hilfe für Objektive C Neuling

Dieses Thema im Forum "iOS-Developer" wurde erstellt von TheNman, 18.08.08.

  1. TheNman

    TheNman Grahams Jubiläumsapfel

    Dabei seit:
    28.06.08
    Beiträge:
    104
    Hi,

    Ich hab mich jetzt mal dazu durchgerungen und will jetzt mal mein erstes Programm fürs iphone schreiben, das nur eine Rechnung machen soll.
    Ich hab jetzt aber ein paar Probleme bei denen Ich net weiter weiß.
    1. Ich hab den Inhalt eines Textfelds und will den vom Typ text in ein float umwandeln, sodass man damit rechen kann.
    2. Dann will ich eine Rechnung machen und die direkt als float in ein Label schreiben. Geht das, oder muss ich das zuerst das Ergebnis in einer Variable speichern und dann in einen String umwandeln um das auszugeben?
    3. Kann ich die Textfelder am iphone so einstellen, das man nur ganze Zahlen eingeben kann.

    Danke schon mal für eure Antworten und ich bin mir net so sicher, ob das schon alle Fragen waren.;)
     
  2. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
    Hi,

    ja das geht alles, aber bitte bitte lies die Dokumentation von Apple, gerade diese "Urschleim"-Sachen stehen nirgendwo besser geschrieben. http://developer.apple.com, im übrigen sind sie im iPhone SDK enthalten. Kleiner Tip zu Frage 1 und 2: NSNumber, NSString, UITextField
    Frage 3: geht im InterfaceBuilder, Stichwort Formatter.

    Abkürzen könnte man das auch mit RTFM :(

    Gruß, SMJ
     
    #2 sumpfmonsterjunior, 18.08.08
    Zuletzt bearbeitet: 18.08.08
  3. TheNman

    TheNman Grahams Jubiläumsapfel

    Dabei seit:
    28.06.08
    Beiträge:
    104
    Ich hab jetzt so weit mal ein Programm am laufen nur jetzt hab ich ein Problem. Das iphone soll ein paar Fakultäten berechnen. Das dumme daran ist nur das die Zahlen ganz schnell ganz groß werden. Ich hab aber gesehen, das der Taschenrechner im iphone bis zu 160 stellen hinterm Komma schafft, aber bei mir macht das iphone immer nach ca. 23 Stellen schlapp und ich habe einen Überlauf.
    Kann ein Double bzw. ein Float auch diese großen Werte annehmen oder ist da bei ca. 23 Stellen immer ein Überlauf egal welche Variable ich verwende?

    Ich bedanke mich schon mal für Antworten
     
  4. sumpfmonsterjunior

    sumpfmonsterjunior Morgenduft

    Dabei seit:
    17.03.05
    Beiträge:
    167
  5. zottel

    zottel James Grieve

    Dabei seit:
    11.07.08
    Beiträge:
    133
    Ich habe zwar noch wenig Erfahrung mit Cocoa/iPhone, aber ganz allgemein: Bist Du sicher, dass Du 160 Stellen hinter dem Komma meinst, gerade bei Fakultäten?

    Ansonsten würde ich vermuten, dass der Taschenrechner von Apple einfach mit Doubles rechnet. Damit hast Du eine Art Computerrepräsentation von wissenschaftlicher Notation, d.h. sowas wie 1,2346 x 10^17. In diesem Beispiel hättest Du zwar 17 Stellen vor dem Komma (ich denke, dass Du das meinst), das sagt aber noch nichts über die Genauigkeit aus. Will sagen (weiter nur ein Beispiel): Möglicherweise wäre Dein Ergebnis eigentlich 12345678901234567 gewesen, aber dafür hat eben die Genauigkeit nicht gereicht. Der Taschenrechner könnte das dann wieder als normale dezimale Zahl darstellen, ohne die Genauigkeit zu berücksichtigen, und in diesem Beispiel würde er 12346000000000000 darstellen, obwohl das so nicht wirklich stimmt.

    Achtung: Das ist hier nur ein Beispiel, ich weiß nur ungefähr, wie Floating-Point-Arithmetik funktioniert, und zum Beispiel nicht einmal, ob überhaupt zur Basis 10 oder etwa zu Basis e gerechnet wird, und ich weiß auch nicht, bis zu welcher Stelle hinter dem Komma in wissenschaftlicher Notation man einem Float oder Double halbwegs vertrauen kann. Die Grundaussage stimmt aber; die Genauigkeit ist begrenzt, und sehr große ganzzahlige Werte können nicht genau repräsentiert werden.

    Was Du brauchst ist eine BigInt-Library, also eine Library, mit der man sehr große Integer-Werte genau verarbeiten kann. Nachdem es in der der CoreFoundation C-Funktionen gibt, mit denen RSA-Verschlüsselung verarbeitet werden kann, müsste es auch Möglichkeiten geben, mit sehr großen Integer-Werten umzugehen. Das funktioniert aber nicht mit den ganz normalen Rechenfunktionen, und ich kann Dir auch nicht sagen, welche Funktionen Du benutzen musst. Selber suchen. ;)

    Viele Grüße,

    Christian
     
  6. TheNman

    TheNman Grahams Jubiläumsapfel

    Dabei seit:
    28.06.08
    Beiträge:
    104
    Hmm, das geht mir nicht um Dezimalzahlen (-> Fakulät) deshalb dachte ich, das ich den mit dem Double arbeiten kann. Meine Frage war eher so gedacht, ob eine double Variable Größere Zahlen speichern kann als eine Variable vom Typ float.
    Danke für schnelle Antwort und tut mir leid, das ich das etwas umständlich bzw. unklar formuliert hab.
    @zottel
    nee sorry das war vor dem Komma. Da hast du schon recht und auf die Genauigkeit kann ich auch verzichten, das spielt im weiteren Verlauf keine große Rolle mehr.
    Und MS Office 03 kann auch nur Fakultäten bis genau 69 errechnen, größere Werte gehen nur mit dem neuen 08. ;)
     
  7. zottel

    zottel James Grieve

    Dabei seit:
    11.07.08
    Beiträge:
    133
    Nicht unbedingt größere Zahlen (obwohl evtl. auch der Exponent mehr Speicher bekommt, weiß ich nicht), aber auf jeden Fall genauere.

    Erläuterndes Beispiel: Angenommen, Float hätte 5 gültige Ziffern, Double 10. Immer dran denken: In Floating Point hast Du im Speicher nicht "12345" stehen, sondern etwas Ähnliches wie "1,2345 x 10^5".

    Das bedeutet: Sowohl mit Float als auch mit Double könntest Du in diesem Beispiel eine zehnstellige Integerzahl repräsentieren; nehmen wir 1234567890. Double wäre damit 1,234567890 x 10^10, Float könnte aber nur 5 gültige Ziffern aufnehmen, das wäre dann 1,2345 x 10^10 – zurückkonvertiert in „normale“ Notation wäre das dann aber 1234500000, also ungenau.

    Wiederum: Nur ein Beispiel zur Verdeutlichung, in Wirklichkeit ist das alles nur ungefähr so. ;)

    Ich glaube (weiß aber nicht sicher), dass Double außerdem auch mehr Stellen im Exponenten erlaubt und damit tatsächlich auch größere Zahlen repräsentieren könnte.
     
  8. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    NSDecimalNumber
     
  9. TheNman

    TheNman Grahams Jubiläumsapfel

    Dabei seit:
    28.06.08
    Beiträge:
    104
    Um mal zu einem Endergebnis zum kommen schreibe ich mal das auf was ich durch Beobachtung gesehen hab:
    Am Besten verwendet man Variablen vom Typ Double or NSDecimalNumber: Bei mir haben beide Typen von Variablen bei ungefähr gleichen Exponenten (ca. 250) einen Überlauf. Damit kann man schon recht ordentliche Werte berechnen. Im Gegensatz zu float Variablen sind sie auch genauer, da sie mehr Stellen hinterm Komma speichern (siehe Beitrag #7)
    Ich bedanke ich nochmal bei allen die mir geholfen haben.
     
  10. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    NSDecimalNumber ist das einzige, was Dich bei kaufmännischen Berechnungen glücklich machen wird.

    Alex
     
  11. TheNman

    TheNman Grahams Jubiläumsapfel

    Dabei seit:
    28.06.08
    Beiträge:
    104
    Ich hab ja eh nur ganze Zahlen und ich hab die nur ausprobiert, weil das da oben stand^^. Ich hab bei mir noch meine Doubles benutzt.
     
  12. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Na ja, man kommt auch mit Ints gut zurecht. Aber in diesem Falle würde ich auch NSDecimalNumber verwenden. Dafür ist es da.
     

Diese Seite empfehlen