Zalecane praktyki używania funkcji IF w równaniach

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 globalnaGV 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.