![]() |
Problem mit Rechenprogramm
Morgen habe ein Problem mit folgendem Programm
Code:
Ich bekomme immer nur ein Ergebnis was so aussieht: 1.00000000000E+0000
program Ohmschenwiderstand;
{$APPTYPE CONSOLE} uses SysUtils; var Spannung,Widerstand: real; begin try { TODO -oEntwickler -cKonsole Main : Hier Code einfügen } except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; begin writeln ('Ohmschenwiderstand berechnen'); writeln ('Geben Sie den Wert fuer die Spannung U ein'); readln (Spannung); writeln ('Geben Sie den Wert fuer den Widerstand R ein'); readln (Widerstand); writeln ('Die Stromstaerke I betraegt'); writeln (Spannung/Widerstand); writeln('OHM'); readln; end; end. Wo ist mein Fehler ? LG David |
AW: Problem mit Rechenprogramm
Dein Fehler ist, daß du Delphi die Formatierung deiner Zahl überlassen hast und das hat sich halt für die Darstellung als Exponentialzahl entschieden. (also zeige soviel wie möglich)
Ich glaub in der OH sollte drinsteht, wie man beim ![]() ![]() ![]() ![]() ![]() PS: Was ist an "Hier Code einfügen" so schwer zu verstehen? Oder anders gesagt, warum ist dein Code hinter dem Schutzblock und nicht darin? :zwinker: Ich würde dir aber noch eine kleine Erweiterung empfehlen.
Delphi-Quellcode:
Denn ohne Debugger oder wenn man das Program nicht direkt von einer Konsole (CMD) aufruft, sieht man die Fehlermeldung nicht (so schnell kann keiner Gucken, wie das Fenster wieder weg ist)
try
// Hier deinen Code einfügen except on E: Exception do begin WriteLn(E.ClassName, ': ', E.Message); WriteLn('Weiter mit [Enter] ...'); ReadLn; end; end; In einem VCL-Programm, z.B. in einer Button-Klick-Methode, hat Delphi auch soeinen Code automatisch drumrumgemacht und zeigt die Meldung dann als MessageBox an. |
AW: Problem mit Rechenprogramm
So berichtigt steht schon drin ist mir gerade auch aufgefallen ;-)
|
AW: Problem mit Rechenprogramm
Allerdings habe ich ihm doch gesagt das es real sein soll !
|
AW: Problem mit Rechenprogramm
Zitat:
Es hat den Wert als Fließkommazahl dargestellt, nur eben mit einem Exponenten. Woher sollte es auch wissen, daß du diese Darstellungsform nicht magst? :wink: Wie gesagt, siehe die genannten Konvertierungsfunktionen und/oder mal die Beschreibung von ![]() ![]() ![]() PS: 1.00000000000E+0000 = 1,00000000000 * 10^+0000 = 1 * 10^0 = 1 * 1 = 1 ^ = hoch = Exponent von 10 |
AW: Problem mit Rechenprogramm
Begreife ich nicht :pale:
|
AW: Problem mit Rechenprogramm
Delphi-Quellcode:
writeln (Spannung/Widerstand :2 :10,' OHM');
|
AW: Problem mit Rechenprogramm
Ok danke ! :-)
|
AW: Problem mit Rechenprogramm
Die Zahl, welche Delphi ausgibt, ist eine
Delphi-Quellcode:
(1,0 mal (10 hoch +0))
1
Die Zahl 123,45 wäre 1.2345e+2 und eine 0,00123 wäre 1.23e-3 . ![]() Zitat:
z.B.
Delphi-Quellcode:
Oder eben du nutzt andere Funktionen (welche oben schon genannt wurden), um diese Fließkommazahl selbst in einen String umzuwandeln, so wie es dir gefällt, und gibst dann diesen String an das WriteLn weiter.
(Spannung/Widerstand):8:2
Delphi-Quellcode:
Genauer Beschreibungen stehen ebenfalls in der OH (Links siehe ein paar Beiträge weiter oben) und vorallem was das N in %n bedeutet wird da erklärt. (
WriteLn(Format('%n', [Spannung/Widerstand]), ' OHM'); // ohne Stellenangabe
WriteLn(Format('%8.2n', [Spannung/Widerstand]), ' OHM'); // mit Stellenangabe, also den gleichen 8 und 2 aus dem oberen Beispiel WriteLn(Format('%.2n', [Spannung/Widerstand]), ' OHM'); // oder einfach nur 2 Nachkommastellen WriteLn(Format('%.2n OHM', [Spannung/Widerstand])); ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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