AGB  ·  Datenschutz  ·  Impressum  







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

Sinus Funktion spinnt?!

Ein Thema von Namenloser · begonnen am 11. Feb 2007 · letzter Beitrag vom 19. Feb 2007
Antwort Antwort
Seite 2 von 2     12   
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Sinus Funktion spinnt?!

  Alt 11. Feb 2007, 19:52
Nun, wenn Du einen Wert auf 0 Prüfen willst,
kanst Du das mit isZero aus der Math Unit testen.

Hier ein Auszug aus der Hilfe:
Zitat:
Unit

Math
Category
Arithmetic routines

function IsZero(const A: Single; Epsilon: Single = 0): Boolean; overload;
function IsZero(const A: Double; Epsilon: Double = 0): Boolean; overload;
function IsZero(const A: Extended; Epsilon: Extended = 0): Boolean; overload;

Description
Use IsZero to test whether the value specified by AValue is zero, or differs from zero by at most Epsilon.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Sinus Funktion spinnt?!

  Alt 11. Feb 2007, 19:57
Dabei sollte man erwähnen, dass Epsilon (in der Mathematik) eine reelle Zahl ist, die beliebig klein, aber größer als 0 ist. Soll also praktisch eine Art Wert sein, der "noch" als 0 gilt.

Du könntest übrigens versuchen, für Digits 0 oder 1 oder sowas anzugeben. Dann sollten die Nullen weg sein.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Sinus Funktion spinnt?!

  Alt 11. Feb 2007, 20:35
Hallo,

vielleicht kannst du die Werte etwas vorbehandeln:

Delphi-Quellcode:
function Fuzzy (aValue: Double; aEpsilon: Double = 1E-9): Double;
begin
  if (Abs(aValue) < aEpsilon) then
    Result := 0.0
  else
    Result := aValue;
end;

begin
  Label1.Caption := Format('x: %.3g', [Fuzzy(x)]);
  Label2.Caption := Format('y: %.3g', [Fuzzy(y)]);
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#14

Re: Sinus Funktion spinnt?!

  Alt 11. Feb 2007, 21:27
Das sieht interessant aus, aber was macht das?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Sinus Funktion spinnt?!

  Alt 11. Feb 2007, 21:55
Die Funktion Fuzzy liefert für (absolut gesehen) sehr kleine Werte eine 0, alle anderen Werte werden unverändert zurückgegeben. Die Genauigkeit läßt sich optional über den Parameter aEpsilon vorgeben, der Defaultwert ist 1E-9.

Bei der Format-Funktion bewirkt die Angabe "%g" das, was FloatToStr mit dem Parameter ffGeneral erreicht - überflüssige Nullen am Ende werden abgeschnitten. In der Online-Hilfe von Delphi findest du eine genaue Beschreibung der Parameter unter dem Stichwort "SysUtils.Format Routine".

Gruß Hawkeye
  Mit Zitat antworten Zitat
swatch

Registriert seit: 28. Jan 2007
1 Beiträge
 
Delphi 2005 Professional
 
#16

Re: Sinus Funktion spinnt?!

  Alt 19. Feb 2007, 14:36
Könnte man anstatt der Funktion Fuzzy nicht auch die Funktion SimpleRoundTo aus der Unit Math verwenden? Diese würde auch für andere eventuelle, minimale Ungenauigkeiten einspringen.

(function SimpleRoundTo(const AValue: Double, const ADigit: TRoundToRange): Double //ADigit gibt die Rundungsgenauigkeit, also aEpsilon an
A programmer is a machine which converts coke to code.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:11 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