AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Cosinus gibt falschen Wert aus

Ein Thema von YXCVBNM1 · begonnen am 27. Mär 2014 · letzter Beitrag vom 27. Mär 2014
Antwort Antwort
Seite 1 von 2  1 2      
YXCVBNM1

Registriert seit: 4. Dez 2010
12 Beiträge
 
#1

Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:29
Hallo allerseits,

ich habe ein ganz komisches Problem.

Die Zeile

Edit1.Text:= FloattoStr(Cos(0.5*Pi))

gibt bei ihrer Ausführung im Edit1 ungefähr -2,7 aus. Meiner Meinung nach (und nach der des Taschenrechners) müsste aber 0 rauskommen.
Die Unit Math ist auch in den Uses vorhanden.

Hat jemand eine Ahnung woran dieser Rechenfehler liegen könnte?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:34
Na ich würde nochmal gaaanz genau hinschauen. Vermutlich steht da sowas wie '-2,72000000000000000000000E-45' oder so.
  Mit Zitat antworten Zitat
YXCVBNM1

Registriert seit: 4. Dez 2010
12 Beiträge
 
#3

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:39
Ach was für ein blöder Fehler. Manchmal sucht man eine halbe Ewigkeit nach einem Fehler und dann ist das sowas primitives.

Vielen Dank
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:52
Meiner Meinung nach (und nach der des Taschenrechners)
Ich glaube dafür gehörst du schon geknufft.

Nicht nur der Taschenrechner, auch der eigene Kopf.



Spaß beiseite: Wenn du Kommazahlen zuverlässig in einem String ausgeben willst, würde ich mir die Funktion FormatFloat(..) einmal ansehen.

Beispiel:

Delphi-Quellcode:
procedure TForm25.FormCreate(Sender: TObject);
const
   formatStr: String = '#0.00';
var
   zahl: Single;
begin
   zahl := Cos(0.5 * Pi());


   memo1.Lines.Append('Vorher:');
   memo1.Lines.Append( zahl.ToString() );

   memo1.Lines.Append(sLineBreak);

   memo1.Lines.Append('Nachher:');
   memo1.Lines.Append( FormatFloat(formatStr, zahl) );

end;
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:52
Winkel und Bogenmaß?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:54
Wenn ich mich nicht irre scheint die Embarcadero-Philosophie zu sein, das Ergebnis von trigonometrischen Funktionen immer im Gradmaß zurückzugeben.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 17:56
Delphi-Quellcode:
procedure TForm25.FormCreate(Sender: TObject);
{...}
   memo1.Lines.Append( zahl.ToString() );
{...}
*hüstel*
falsche Programmiersprache


   memo1.Lines.Append(IntToStr(zahl));
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 18:12
*hüstel*
falsche Programmiersprache
In neueren Delphis geht das.
Seitdem Record-Helper nun auch endlich für generische Typen verfügbar sind, haben String, Integer und Co. auch eine ToString-Methode, so wie es TObjekt von Grund auf ja auch schon seit 'ner Weile hat.

Wenn ich mich nicht irre scheint die Embarcadero-Philosophie zu sein, das Ergebnis von trigonometrischen Funktionen immer im Gradmaß zurückzugeben.
Ist es nicht Rad?

Und nein, das ist nicht Delphi/Borland, sondern kommt so direkt von der CPU (früher FPU).
$2B or not $2B

Geändert von himitsu (27. Mär 2014 um 18:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 18:22
Seitdem Record-Helper nun auch endlich für generische Typen verfügbar sind
Du meinst wohl für simple Typen - für generische Typen gibt's nach wie vor keine Helper.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Cosinus gibt falschen Wert aus

  Alt 27. Mär 2014, 18:33
Aber AnsiString, UnicodeString und LongInt sind doch generische Typen, oder hieß das doch ein bissl anders?
Also die grundsätzliche Basistypen des Compilers, oder so ... nicht zu verwechseln mit den Generics.
$2B or not $2B

Geändert von himitsu (27. Mär 2014 um 18:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz