• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Das Monatsmotto Juli lautet -- Kitsch as Kitsch can -- Jeder von Euch kann dafür ganz individuell bestimmen, was für ihn Kitsch ist und ein Foto davon einsenden. Macht mit, traut Euch! --> Klick

Tipps und Hilfe für Objektive C Neuling

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
<div class="bbWrapper">Hi,<br /> <br /> Ich hab mich jetzt mal dazu durchgerungen und will jetzt mal mein erstes Programm fürs iphone schreiben, das nur eine Rechnung machen soll.<br /> Ich hab jetzt aber ein paar Probleme bei denen Ich net weiter weiß.<br /> 1. Ich hab den Inhalt eines Textfelds und will den vom Typ text in ein float umwandeln, sodass man damit rechen kann. <br /> 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?<br /> 3. Kann ich die Textfelder am iphone so einstellen, das man nur ganze Zahlen eingeben kann.<br /> <br /> Danke schon mal für eure Antworten und ich bin mir net so sicher, ob das schon alle Fragen waren.<img src="/community/styles/apfeltalk/smilies/Wink.png" class="smilie" loading="lazy" alt=";)" title="Wink ;)" data-shortname=";)" /></div>
 

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
<div class="bbWrapper">Hi,<br /> <br /> ja das geht alles, aber bitte bitte lies die Dokumentation von Apple, gerade diese &quot;Urschleim&quot;-Sachen stehen nirgendwo besser geschrieben. <a href="http://developer.apple.com" target="_blank" class="link link--external" rel="nofollow ugc noopener">http://developer.apple.com</a>, im übrigen sind sie im iPhone SDK enthalten. Kleiner Tip zu Frage 1 und 2: NSNumber, NSString, UITextField<br /> Frage 3: geht im InterfaceBuilder, Stichwort Formatter.<br /> <br /> Abkürzen könnte man das auch mit RTFM <img src="/community/styles/apfeltalk/smilies/Worried Face.png" class="smilie" loading="lazy" alt=":(" title="Frown :(" data-shortname=":(" /><br /> <br /> Gruß, SMJ</div>
 
Zuletzt bearbeitet:

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
<div class="bbWrapper">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.<br /> 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?<br /> <br /> Ich bedanke mich schon mal für Antworten</div>
 

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
<div class="bbWrapper">Hi, an und für sich geht das auch mit double, wobei sich durchaus Rundungsfehler einschleichen können - weiß auch nicht, welche Genauigkeit der double-Datentyp auf der iPhone Platform hat.<br /> <br /> Schau Dir das mal an <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/NumbersandValues/Articles/DecimalNumbers.html#//apple_ref/doc/uid/20000176-CJBCAGDI" target="_blank" class="link link--external" rel="nofollow ugc noopener">http://developer.apple.com/document...rs.html#//apple_ref/doc/uid/20000176-CJBCAGDI</a>, das ist ein OO-Wrapper, der diese low-level Sachen abstrahiert.<br /> <br /> Beste Grüße, SMJ</div>
 

zottel

James Grieve
Registriert
11.07.08
Beiträge
133
<div class="bbWrapper">Ich habe zwar noch wenig Erfahrung mit Cocoa/iPhone, aber ganz allgemein: Bist Du sicher, dass Du 160 Stellen <i>hinter</i> dem Komma meinst, gerade bei Fakultäten?<br /> <br /> 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 <i>vor</i> 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.<br /> <br /> 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.<br /> <br /> 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 <i>nicht</i> mit den ganz normalen Rechenfunktionen, und ich kann Dir auch nicht sagen, welche Funktionen Du benutzen musst. Selber suchen. <img src="/community/styles/apfeltalk/smilies/Wink.png" class="smilie" loading="lazy" alt=";)" title="Wink ;)" data-shortname=";)" /><br /> <br /> Viele Grüße,<br /> <br /> Christian</div>
 

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
<div class="bbWrapper">Hmm, das geht mir nicht um Dezimalzahlen (-&gt; 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. <br /> Danke für schnelle Antwort und tut mir leid, das ich das etwas umständlich bzw. unklar formuliert hab.<br /> @zottel <br /> 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. <br /> Und MS Office 03 kann auch nur Fakultäten bis genau 69 errechnen, größere Werte gehen nur mit dem neuen 08. <img src="/community/styles/apfeltalk/smilies/Wink.png" class="smilie" loading="lazy" alt=";)" title="Wink ;)" data-shortname=";)" /></div>
 

zottel

James Grieve
Registriert
11.07.08
Beiträge
133
<div class="bbWrapper">Nicht unbedingt größere Zahlen (obwohl evtl. auch der Exponent mehr Speicher bekommt, weiß ich nicht), aber auf jeden Fall genauere.<br /> <br /> Erläuterndes Beispiel: Angenommen, Float hätte 5 gültige Ziffern, Double 10. Immer dran denken: In Floating Point hast Du im Speicher nicht &quot;12345&quot; stehen, sondern etwas Ähnliches wie &quot;1,2345 x 10^5&quot;.<br /> <br /> 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.<br /> <br /> Wiederum: Nur ein Beispiel zur Verdeutlichung, in Wirklichkeit ist das alles nur <i>ungefähr</i> so. <img src="/community/styles/apfeltalk/smilies/Wink.png" class="smilie" loading="lazy" alt=";)" title="Wink ;)" data-shortname=";)" /><br /> <br /> 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.</div>
 

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
<div class="bbWrapper">Um mal zu einem Endergebnis zum kommen schreibe ich mal das auf was ich durch Beobachtung gesehen hab: <br /> 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)<br /> Ich bedanke ich nochmal bei allen die mir geholfen haben.</div>
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
<div class="bbWrapper">NSDecimalNumber ist das einzige, was Dich bei kaufmännischen Berechnungen glücklich machen wird.<br /> <br /> Alex</div>
 

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
<div class="bbWrapper">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.</div>
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
<div class="bbWrapper"><blockquote data-attributes="" data-quote="below" data-source="post: 1623865" class="bbCodeBlock bbCodeBlock--expandable bbCodeBlock--quote js-expandWatch"> <div class="bbCodeBlock-title"> <a href="/community/goto/post?id=1623865" class="bbCodeBlock-sourceJump" rel="nofollow" data-xf-click="attribution" data-content-selector="#post-1623865">below schrieb:</a> </div> <div class="bbCodeBlock-content"> <div class="bbCodeBlock-expandContent js-expandContent "> NSDecimalNumber ist das einzige, was Dich bei kaufmännischen Berechnungen glücklich machen wird. </div> <div class="bbCodeBlock-expandLink js-expandLink"><a role="button" tabindex="0">Zum Vergrößern anklicken....</a></div> </div> </blockquote>Na ja, man kommt auch mit Ints gut zurecht. Aber in diesem Falle würde ich auch NSDecimalNumber verwenden. Dafür ist es da.</div>