Jeśli podczas używania funkcji IF
zostanie przypisana wartość w ustawieniu Zmienna globalna
lub wartość, względem której nastąpi porównanie, program może wygenerować nieoczekiwany wynik z powodu arytmetyki zmiennoprzecinkowej wykonywanej w równaniu.
W programie SOLIDWORKS do porównywania wartości jest stosowana arytmetyka zmiennoprzecinkowa. Jeśli na przykład w ustawieniu Zmienna globalna
użytkownik wpisze wartość 2.2, program SOLIDWORKS może ją zinterpretować jako 2,2000001 lub 2,1999998. W takim przypadku wynikiem porównania będzie 0 (fałsz) zamiast 1 (prawda).
Aby uniknąć tego problemu, należy w równaniu porównawczym użyć wartości tolerancji. W tym przykładzie tolerancja będzie miała wartość 0,0000001.

W polu Wartość/Równania utworzyć następującą instrukcję IF:
= iif ( abs ("GV" - 2.2) <= "tolerance", 1,
0)
W porównawczej funkcji IF
Test with
tolerance dodatnia wartość bezwzględna ustawienia
Zmienna globalna
GV pomniejszona o nią samą jest mniejsza lub równa wartości w polu
tolerance, w związku z czym wynikiem równania w polu
Wyznacza wartość jest
1, tak jak oczekiwano.
Z kolei w funkcji Test without
tolerance ustawienie Wyznacza wartość nieoczekiwanie ma wartość 0.
Za pomocą funkcji abs()
(wartość bezwzględna) można wygenerować wartość dodatnią operacji odejmowania, która zostanie porównana z wartością tolerancji. Jeśli jeden lub oba porównywane argumenty w równaniu mają wartości ujemne, należy użyć funkcji abs()
w celu uzyskania żądanej logiki.