Странности със <

1 отговора 0 прегледа
#1

Странности със <

Елементарна проверка --->
If (b / D) < 0.17 Then ...
но при b=1,7 и D =10 влиза във тази клонка, а не трябва да влиза (= е, а не <).
При промяна на кода на
If (b / D) * 100 < 17 Then ...
работи правилно.

Защо така се получава? Променливите са от тип Double. VB е VB2005.


Отговор
в отговор на naki #2

Re: Странности със &lt;

Равенство на две реални числа е нещо много относително! (Не само в БЕЙСИКА) Така , че ако требе да се прави проверка дали А=В (например) и А и В са реални числа е мнобо по-добре да е проврката дали ABS(А-В)<EPS, пък EPS да е константа и е напр. 0.000000001
В твоя случай ти препоръчвам два варианта:

1. Да следиш за равенство нейде по-нагоре:
eps=0.0000001
if abs(b/d-0.17)<eps Then ......

2. Закръглявай до некой знак преди да провериш нещо. До кой знак ще закръгляш - това зависи от заданието дето требе да направиш.

Отговор