Komma Ergebnis falsch
Komma Ergebnis falsch
Guten Tag,
ich habe ein kleines Programm geschrieben, welches nur das Umrechnen und wiedergeben von Grad Celsius in Fahrenheit soll.
Jetzt verstehe ich nicht warum ich jedes mal ein komisches Ergebnis mit einer falschen Kommastelle angezeigt bekomme.
z.B.
Ich gebe 100 als Wert ein und der Rechner gibt mir diesen Wert als Fahrenheit wieder: 2.120000000000E+002
Warum bekomme ich es nicht als ganze Zahl angezeigt?
Programm:
Classes
{ you can add units after this };
var Celcius, Fahrenheit: real;
begin
writeln ('gib den Celcius Wert an');
readln (Celcius); (*lies den Wert für den Celcius ein*)
Fahrenheit:= 32+ Celcius *1.8; (*Berechnung*)
writeln ('Es sind '' Grad Fahrenheit');
writeln (Fahrenheit); (*gebe das Resultat aus*)
readln(); (*Grad in Fahrenheit*)
end.
ich habe ein kleines Programm geschrieben, welches nur das Umrechnen und wiedergeben von Grad Celsius in Fahrenheit soll.
Jetzt verstehe ich nicht warum ich jedes mal ein komisches Ergebnis mit einer falschen Kommastelle angezeigt bekomme.
z.B.
Ich gebe 100 als Wert ein und der Rechner gibt mir diesen Wert als Fahrenheit wieder: 2.120000000000E+002
Warum bekomme ich es nicht als ganze Zahl angezeigt?
Programm:
Classes
{ you can add units after this };
var Celcius, Fahrenheit: real;
begin
writeln ('gib den Celcius Wert an');
readln (Celcius); (*lies den Wert für den Celcius ein*)
Fahrenheit:= 32+ Celcius *1.8; (*Berechnung*)
writeln ('Es sind '' Grad Fahrenheit');
writeln (Fahrenheit); (*gebe das Resultat aus*)
readln(); (*Grad in Fahrenheit*)
end.
Re: Komma Ergebnis falsch
Du rechnest mit REAL und wunderst dich wenn dein Programm dir REAL anzeigt ???
Na vielleicht bist du tollkühn und versuchst mal das hier:
FloatToStr
IntToStr
Round
btw: wäre SINGLE oder DOUBLE nicht besser als REAL???
EDIT: natürlich gibt es da noch mehrere Möglichkeiten:
z.B.: TRUNC oder INT
Na vielleicht bist du tollkühn und versuchst mal das hier:
FloatToStr
IntToStr
Round
Code: Alles auswählen
c:= 32 + 100 * 1.8;
ShowMessage(IntToStr(Round(c)));
ShowMessage(FloatToStr(c));
EDIT: natürlich gibt es da noch mehrere Möglichkeiten:
z.B.: TRUNC oder INT
Code: Alles auswählen
ShowMessage(IntToStr(Trunc(c)));
ShowMessage(FloatToStr(Int(c)));
Zuletzt geändert von SoE am Fr 17. Jun 2016, 00:56, insgesamt 1-mal geändert.
-
- Beiträge: 320
- Registriert: Sa 21. Mär 2009, 17:31
- OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
- CPU-Target: 64 Bit
Re: Komma Ergebnis falsch
SoE hat geschrieben:
btw: wäre SINGLE oder DOUBLE nicht besser als REAL???
Currency
Die Temperatur wird ja wohl kaum extreme Exponenten haben
Re: Komma Ergebnis falsch
Code: Alles auswählen
Currency



-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komma Ergebnis falsch
So kann man das Problem am einfachsten lösen.Ich gebe 100 als Wert ein und der Rechner gibt mir diesen Wert als Fahrenheit wieder: 2.120000000000E+002
Code: Alles auswählen
writeln (Fahrenheit:10:0); (*gebe das Resultat aus*)
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Komma Ergebnis falsch
Hmm.. really nice... das kannte ich noch nicht... danke..writeln (Fahrenheit:10:0);
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komma Ergebnis falsch
Das gab es schon zur Turbo Pascals Zeiten. 

Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Komma Ergebnis falsch
OK... das ist 'ne Weile her... die erste Version, die ich davon gesehen habe war 5.5, aber damals hatte ich nicht viel am Hut mit dem Programmschreiben. Ein Familienmitglied hat mit der Version die tollsten Sachen gebaut....Turbo Pascals Zeiten.
Ich habe mir sogar mal TP 7.0 gekauft und wollte damit anfangen... leider kam was dazwischen. Ich weiß gar nicht mehr wieviel Disketten das waren... waren aber 'ne Menge...

-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komma Ergebnis falsch
Die : kann man sonst noch gut brauchen.
Nur leider gibt es Probleme mit Umlauten.
Nur leider wen man eine zu schnelle CPU hatte, ich glaube 233MHz, konnte man die Unit Crt nicht mehr brauchen.
Nur leider gibt es Probleme mit Umlauten.
Code: Alles auswählen
var
s: string;
r: single;
begin
r := 123.456;
Str(r: 10: 5, s);
WriteLn(s);
WriteLn('Ich':10);
WriteLn('bin':10);
WriteLn('Rechts':10);
WriteLn('Bündig':10); // Fehlerhaft
end.
Es waren nur 4 Stück. BP 7.0 hatte mehr.ch habe mir sogar mal TP 7.0 gekauft und wollte damit anfangen... leider kam was dazwischen. Ich weiß gar nicht mehr wieviel Disketten das waren..
Nur leider wen man eine zu schnelle CPU hatte, ich glaube 233MHz, konnte man die Unit Crt nicht mehr brauchen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Komma Ergebnis falsch
Schätze dann hatte ich wohl BP 7.0 in irgendeiner erweiterten Version. Das waren sicher 10 bis 14 Disketten und zwei dicke Brocken und noch andere Bücher bzw. Hefte. Glücklicherweise kann ich mich nicht an den Preis erinnern, der war auf jeden Fall zu hoch dafür das ich nie damit gearbeitet habe... Das nächste Mal als ich Zeit hatte, hab' ich gesehen, dass es Free Pascal gibt und damit konnte man 32bit Programme bauen....
btw. um IntToStr oder FloatToStr zu nutzen muß man SysUtils in die USES Klausel eintragen, auch wenn das in diesem Fall nicht notwendig ist, da der WriteLn-Weg viel besser ist... hatte ich oben vergessen...
Gibt es eigentlich eine Aufstellung mit allen möglichen Units, die man dort verwenden kann...
Ich benutze nur sehr selten Konsolenprogramme und kenne nur diese hier:
btw. um IntToStr oder FloatToStr zu nutzen muß man SysUtils in die USES Klausel eintragen, auch wenn das in diesem Fall nicht notwendig ist, da der WriteLn-Weg viel besser ist... hatte ich oben vergessen...
Gibt es eigentlich eine Aufstellung mit allen möglichen Units, die man dort verwenden kann...
Ich benutze nur sehr selten Konsolenprogramme und kenne nur diese hier:
Code: Alles auswählen
Uses
Video, Mouse, Keyboard, Crt, SysUtils, Classes, Process, Math ....
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komma Ergebnis falsch
Da hat sich gegenwärtig zum Glück viel getan, für die Programm-Entwicklung muss man im Normalfall keine Software mehr kaufen.Glücklicherweise kann ich mich nicht an den Preis erinnern, der war auf jeden Fall zu hoch dafür das ich nie damit gearbeitet habe...
Es gibt unterdessen für (fast) alles eine Freeware oder OpenSource.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot