![]() |
Problem bei der Divison in einem Taschenrechner!
Hi an Alle!
Ich habe die Suchfunktion benutzt und den Thread für Newbie's angeschaut, konnte dort aber keine Antwort auf meine Frage finden! Leider! Nunja, zu meinem Problem: Ich bin in einem Informatik-Leistungskurs 11 Klasse, und wir starten mit der Programmierung eines Taschenrechners: Grundfunktion: 3 Edit Felder, Feld 1+2 werden addiert/subtrahiert/dividiert/multipliziert und in Feld 3 als "Int" ausgegeben. (Dafür brauchten wir dann auch die StrToInt und umgekehrten Befehle) Soweit habe ich damit auch keine Probleme, aber welchen Typ muss ich bei der Division nutzen um Kommazahlen anzeigen zu lassen? Da bei dem bisherigen Typ "Int" zB bei der Aufgabe 10 : 3, genau 3 als Ergebnis angezeigt wird! Könnt ihr mir da helfen? Vielen herzlichen Dank im Voraus, Dominique |
Re: Problem bei der Divison in einem Taschenrechner!
nimm den typ extended. dann musst du floattostr und strtofloat nehmen und außerdem statt DIV das Zeichen
Delphi-Quellcode:
nehmen.
/
Übrigens: eine Exponentielle Rechnung machst du mit
Delphi-Quellcode:
um das verwenden zu können, musst du aber die Zusatzunit math einbinden (oben steht uses und dann eine Liste von Namen. Da schreibst du math, dazu.
Power(basis,exponent);
|
Re: Problem bei der Divison in einem Taschenrechner!
Dafür verwendest du am besten Real
und zum formatieren nach String StrtoFloat, bzw FloattoStr |
Re: Problem bei der Divison in einem Taschenrechner!
extended is viel, viel genauer als real (2,5 mal so genau)
|
Re: Problem bei der Divison in einem Taschenrechner!
Zitat:
Und wie ist das mit dem StrToFloat gemeint? (Das sind meine ersten Schritte in Delphi!) Ausserdem, wie ist der Code für Real? StrToReal? |
Re: Problem bei der Divison in einem Taschenrechner!
wie heisst den der Fehler? floattostr wandelt eine Kommazahl in einen Text um und strtofloat einen Text in eine Kommazahl.
|
Re: Problem bei der Divison in einem Taschenrechner!
Wenn ich "/" benutze, dann zeigt er mir einen Fehler an!
Zitat:
Zitat:
|
Re: Problem bei der Divison in einem Taschenrechner!
welchen denn? wie heisst der Text von dem Fehler genau?
|
Re: Problem bei der Divison in einem Taschenrechner!
Hi Zwock,
du musst auch FloatToStr bzw. StrToFloat anstatt IntToStr bzw. StrToInt verwenden :) |
Re: Problem bei der Divison in einem Taschenrechner!
Und wo liegt der Unterschied zwischen dem Typ "Float" und "Int"? Das interessiert mich jetzt ^^ Man will ja aus seinen Fehlern was für die Zukunft lernen, und nicht einfach abtippen was einem vorgesagt wird :)
Es funktioniert übrigens jetzt! Er zeigt mir die korrekten Ergebnise bei der Division an! |
Re: Problem bei der Divison in einem Taschenrechner!
float is eine Kommazahl. In float kannst du z.b. den wert 1.589727489 speichern oder pi oder sqrt(2) (wurzel 2). int ist eine natürliche Zahl. Int verwendest du z.B. um dir zu merken, in welchem Schuljahr du bist, wie viel Leben der Spieler noch hat oder wie oft der PC heute schon abgestürtzt ist (ich 6 :pale: ). Float verwendest du, um dir zu merken, wie viel mhz dein PC hat (z.B. 166.666) oder alle wie viel Sekunden der PC abstürtzt (z.B. 3539.294)
|
Re: Problem bei der Divison in einem Taschenrechner!
OkiDoki! Dann danke ich euch recht herzlich für eure Hilfe/Geduld mit mir! :D
|
Re: Problem bei der Divison in einem Taschenrechner!
Ergänzung:
DIV ist eine Ganzzahldivision, / eine normale. Noch ein Hinweis: Bei Kommazahlen nimmt Delphi zwar als Trennzeichen das Komma an, wenn es im Code steht, muss aber ein Punkt verwendet werden:
Delphi-Quellcode:
Gruß,
Float := Eingabe * 15.23;
ManuMF |
Re: Problem bei der Divison in einem Taschenrechner!
[OT]
Zitat:
[/OT] |
Re: Problem bei der Divison in einem Taschenrechner!
Zitat:
![]() |
Re: Problem bei der Divison in einem Taschenrechner!
was heisst denn dem is nich so?
ist es nicht egal, ob er jetzt 1,5 oder 15 Nanosekunden braucht um die Rechenoperation durchzuführen? und die 6 Byte zusätzlicher RAM machens auch nicht gerade aus, oder? wo ja der RAM eh von der Anwendung vorneherein verwendet wird, nämlich um nix zu speichern. |
Re: Problem bei der Divison in einem Taschenrechner!
Oh, jetzt fällt mir auch wieder ein, warum ich mich vor einem Jahr nach dem Lesen eines Posts für Double und gegen Extended entscheiden habe :mrgreen: . Danach muss ich mir aber irgendwo den Falschglauben angelesen haben :gruebel: .
Dass es in .Net nun gar keinen Extended-Typ mehr gibt, spricht auch eher dagegen. [add] @ichbins: Bei 1,3-facher Nachkommastellenanzahl, aber dreifacher Rechenzeit würde ich es mir bei rechenlastigen Anwendungen (wozu eine Taschenrechner eher nicht zählt) doch genauer überlegen. [/add] |
Re: Problem bei der Divison in einem Taschenrechner!
kann ich eigentlich auch einen eigenen extended-typ (z.B. mit 100 Byte größe) schreiben? oder noch besser dynamisch? wenn ich z.B. schnell pi auf 100.000 Stellen genau berechnen will, gibt auch extended den Geist auf...
|
Re: Problem bei der Divison in einem Taschenrechner!
Natürlich,
![]() [add] Für unendlich viele Nachkommastellen kannst du dir Hagens DEC-Math-Units anschauen, die müssen irgendwo in der DP als Anhang sein. [/add] |
Re: Problem bei der Divison in einem Taschenrechner!
Zitat:
Zitat:
Zitat:
Es kommt nunmal immer darauf an was man machen möchte, und welcher Aspekt einem wichtig ist. Ein generelles "das ist das einzig wahre" gibt es hier imho nicht. Speziell zum Thema Extended vs. Double: Der Tradeoff ist rein rechnerisch ziemlich mies. Du bekommst ca. 125% Genauigkeit für ca. 305% der Rechenzeit. In meinen Augen recht teuer. Ich will hier nicht sagen, dass Extended nicht sogar geeignet wäre. Kommt auf die Zielsetzung an. Jedoch finde ich es wichtig so kleine Hintergründe zu wissen um bedächtiger mit den vorhandenen Ressourcen umgehen zu können, und damit man weiss wo im Zweifelsfall Optimierungspotential vorhanden ist. Ich finde nicht dass einem Anfänger mit barschen Totalaussagen "das beste", "das schnellste" geholfen ist, da diese je nach Umstand nicht mehr zutreffen. Gerade das ist imho die Kunst der Informatik: An der richtigen Stelle die genau passende Lösungsstrategie zu finden die zum Ziel führt. Und mit Schrotflinten nach Fliegen zu schießen ist in meinen Augen nicht passend :). Das mag bei einem so kleinen Problem wie einem Taschenrechner völlig unnötig klingen, aber gerade bei Einsteiegern ist die Gefahr, dass ein solches Vorgehen auch in spätere größere Projekte geschleppt wird, groß (verständlicherweise). Von daher finde ich es wichtig von vorne herein auch für solche Spitzfindigkeiten zu sensibilisieren - nicht um jemanden zu ärgern, sondern um den Pool an Randwissen und den "Blick" für solche Dinge groß und offen zu halten. Mit "nehme ich immer" ist keinem wirklich geholfen (meistens). Und wenn sich ein Einsteiger von so etwas zunächst erschlagen fühlt: Das legt sich mit der Zeit - das ist sicher ;) Und damit sich das schnell legt, gibt es Foren wie uns :D Ein kleiner OT-Beitrag vom Fabian :mrgreen: |
Re: Problem bei der Divison in einem Taschenrechner!
Also liebe Leute!
Nachdem ihr mir das letzte Mal so nett, schnell und kompetent geholfen habt, habe ich hier schonwieder eine Frage: Das Prinzip bleibt das selbe. Ein Taschenrechner mit 3 Edit Feldern, Feld 1 u. 2 werden verrechnet, das Ergebnis wird in Feld drei angezeigt. Auslöser ist ein Onclik Ereigniss auf 4 Buttons, die je für eine Rechenart stehen. Also ein Button für +, einer für - u.s.w. Wenn nun aber bei dem Klick auf z.B. + , ein Plus zwischen den beiden Feldern erscheinen soll, was muss ich da tun? Bisher habe ich als Onclick ereigniss folgendes benutzt: Ein Label zwischen die beiden Felder gesetzt (Label2) und folgenden Code verwendet:
Delphi-Quellcode:
Wo liegt der Fehler, und wenn es geht bitte auch eine kleine Erklärung, man will ja aus seinen Fehlern lernen!
Label2.Caption:= x;
Danke im Voraus Sincerly Dominique E. |
Re: Problem bei der Divison in einem Taschenrechner!
Hai Zwocke,
was ist x denn für eine Variable? Oder soll in dem Label ein x stehen? Wenn ja:
Delphi-Quellcode:
Label2.Caption := 'x';
|
Re: Problem bei der Divison in einem Taschenrechner!
Hi Sharky!
X ist keine Variable sondern ein Text, bzw. soll als Text ausgegeben werden im Label! |
Re: Problem bei der Divison in einem Taschenrechner!
Zitat:
Gruß, ManuMF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz