C - Vergleich am Zahlenstrahl

Gast #264693
Lesenswert?
• ▲
▼
Hallo Leute,
ich habe eine mächtige Blockade im Kopf! Vieleicht könnt ihr die mir
lösen.

Mein Problem:
Eine C-Funktion liefert Werte von -1e-8 bis +1e-8.

Ich möchte aber nur Werte im Bereich von -1e-6 bis +1e-6 auswerten.

....unwichtig.......-1e-6.......0........+1e-6......unwichtig....
                    .......... wichtig........

Werte die kleiner(unwichtig) sind sollen auf Null gesetzt werden.

Ich habe folgendes geschrieben:

float ad_wert;

if(( ad_wert < -1e-6) && ( ad_wert < 1e-6))
   ad_wert = 0;
.
.
Obiges Beispiel habe ich empierisch abgeändert,(logische Denken ist mir
schon abhanden gekommen), aber nicht funktioniert.

Gibt es Hilfe für mich? Ich schreibe mit Codevision für mega128.

Gruß   Brillitsch
#264695
Lesenswert?
• ▲
▼
naja wenn du Werte kleiner als einen oder größer als ein anderer auf 0
setzt, dann liegen sie ja plötzlich in der Mitte deines Bereiches.

Ich meine du willst sie eher auf deinen Bereich begrenzen (für mich
logischer) dann würdest du mit folgendem auskommen:

const double min = xxxx;
const double max = xxxx;

if ( wert > max ) wert = max;
if ( wert < min ) wert = min;


da mir Codevision nicht genau bekannt ist, müssest du das Beispiel halt
entsprechend abändern.
Gast #264696
Lesenswert?
• ▲
▼
Ich weiss ja nicht, was Du damit vorhast, aber ich kann mir vorstellen,
dass es so nette Seiteneffekte gibt, wenn der Wert um die Grenzen
schwankt.

In den meisten Fällen ist es sicher sinnvoller, den Wert nach oben und
unten zu begrenzen, statt bei Über- oder Unterschritung einen ganz
anderen Wert (NULL) einzusetzen:

  if (ad_wert < -1e-6){
    ad_wert = -1e-6;
  }
  if (ad_wert > 1e-6){
    ad_wert = 1e-6;
  }

Viele Grüße, Stefan
Gast #264697
Lesenswert?
• ▲
▼
Hallo Michael, hallo Anton,

mit mir ist es wirklich schlimm. Ich glaub ich hab meine
Problemstellung vermurkst.

Ich schrieb und das ist falsch:
....unwichtig.......-1e-6.......0........+1e-6......unwichtig....
                    .......... wichtig........

Es soll heissen:
....wichtig.........-1e-6.........0............+1e-6......wichtig....
                    ..unwichtig, auf Null setzen..

Brillitsch
Gast #264698
Lesenswert?
• ▲
▼
Über Deinen Ausdruck in der if-Anweisung hat der andere Michael sich
schon ausgelassen.
Ich möchte Dein Augenmerk auf etwas anderes lenken:
Du schriebst:

>>>  Eine C-Funktion liefert Werte von -1e-8 bis +1e-8.

>>>  Ich möchte aber nur Werte im Bereich von -1e-6 bis +1e-6
auswerten.

Ich hoffe, Dir ist klar, dass gilt

-1e-6 < -1e-8 < 0 < 1e-8 < 1e-6

Das heißt, wenn Deine Funktion Werte zwischen -1e-8 und +1e-8 liefert,
dass dann ALLE diese Werte AUTOMATISCH zwischen -1e-6 und 1e-6 liegen.

Gruß, Michael
Gast #264700
Lesenswert?
• ▲
▼
Hallo sous,

ja, du hast recht. Mich interessieren nur Werte ausserhalb von
-1e-6 bis +1e-6.

@Stefan Kleinwort

Die Werte werden erst durch 0,0064 geteilt und dann auf ein Display
ausgegeben. Liegt der Wert innerhalb der Grenzen von -1e-6 bis +1e-6
so soll das Display 0,00000 zeigen.


Gruß Brillitsch

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.