Странности със <
1 отговора
0 прегледа
Странности със <
Елементарна проверка --->
If (b / D) < 0.17 Then ...
но при b=1,7 и D =10 влиза във тази клонка, а не трябва да влиза (= е, а не <).
При промяна на кода на
If (b / D) * 100 < 17 Then ...
работи правилно.
Защо така се получава? Променливите са от тип Double. VB е VB2005.
If (b / D) < 0.17 Then ...
но при b=1,7 и D =10 влиза във тази клонка, а не трябва да влиза (= е, а не <).
При промяна на кода на
If (b / D) * 100 < 17 Then ...
работи правилно.
Защо така се получава? Променливите са от тип Double. VB е VB2005.
Re: Странности със <
Равенство на две реални числа е нещо много относително! (Не само в БЕЙСИКА) Така , че ако требе да се прави проверка дали А=В (например) и А и В са реални числа е мнобо по-добре да е проврката дали ABS(А-В)<EPS, пък EPS да е константа и е напр. 0.000000001
В твоя случай ти препоръчвам два варианта:
1. Да следиш за равенство нейде по-нагоре:
eps=0.0000001
if abs(b/d-0.17)<eps Then ......
2. Закръглявай до некой знак преди да провериш нещо. До кой знак ще закръгляш - това зависи от заданието дето требе да направиш.
В твоя случай ти препоръчвам два варианта:
1. Да следиш за равенство нейде по-нагоре:
eps=0.0000001
if abs(b/d-0.17)<eps Then ......
2. Закръглявай до некой знак преди да провериш нещо. До кой знак ще закръгляш - това зависи от заданието дето требе да направиш.