Prüfen ob +- oder gleich eine Variable

  • Hallo alle zusammen
    Ich würde gerne überprüfen ob eine Varable +-0,1 oder gleich einer anderen Variable ist. Derzeit mache ich das so:

    [autoit]

    if $Vergleich = $vacuum+0.1 or $Vergleich = $vacuum-0.1 or $Vergleich = $vacuum then

    [/autoit][autoit][/autoit][autoit]

    else

    [/autoit]

    Allerdings finde ich diese Methode nicht sehr schön. Gibt es noch eine bessere Methode das zu überprüfen?
    lg Aquila[MSIE_newline_end ]

    2 Mal editiert, zuletzt von Aquila (20. April 2010 um 09:37)

  • [url='http://translation.autoit.de/onlinehilfe/keywords.htm']

    [autoit]

    if $Vergleich < $vacuum+0.1 AND $Vergleich > $vacuum-0.1 then

    [/autoit]

    aber da bekommst du nicht nur die, die gleich, gleich -0,1 und gleich +0,1 sind, sondern alle die zwischen -0,1 und +0,1 liegen.
    Ansonten würde mir nichts einfallen...

  • [autoit]

    Local $Vergleich = 30
    Local $Vacuum = 30

    [/autoit][autoit][/autoit][autoit]

    Switch $Vergleich
    Case $Vacuum - 0.1 To $Vacuum + 0.1
    MsgBox(0, "OK", "Messwert in der Toleranz")
    Case Else
    MsgBox(0, "Fehler", "Messwert außerhalb der Toleranz")
    EndSwitch

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Besten dank für die schnelle Antwort habs jetzt mit switch gemacht und es funktioniert
    lg Aquila[MSIE_newline_end ]

  • [autoit]

    $vakuum=30

    [/autoit][autoit][/autoit][autoit]

    for $vergleich=29.5 to 31 step 0.05
    if abs(round(($vergleich-$vakuum),4))<=0.1 then consolewrite ($vergleich & @CRLF )
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $vergleich-$vakuum = ' & $vergleich-$vakuum & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    next

    [/autoit]


    Allerdings sollte man, wie bei sämtlichen Floatingpointberechnungen, die Rechenungenauigkeit beachten, daher ROUND auf die relevante Anzahl der Nachkommastellen.

  • Ist zwar schon gelöst, aber ich würde gerne meine Variante veröffentlichen ;) .
    (Bei den bisherigen Tests war alles richtig.. Falls es Fehler gibt bitte mitteilen :!: )

    [autoit]

    $vacuum = 0.2
    $Vergleich = 0.1

    [/autoit][autoit][/autoit][autoit]

    If Not (Abs($Vergleich - $vacuum) > 0.1) Then
    MsgBox(0,":D","Bedingung erfüllt!")
    Else
    MsgBox(0,":(","Bedingung nicht erfüllt!")
    EndIf

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!