1 (изменено: pad0nak, 2012-02-13 20:32:19)

Тема: VBS: Непонятный подсчёт

Уважаемые господа кодеры, прошу помочь в одном не лёгком деле...
Почему-то когда выполняю:

MsgBox(0.8515-0.7686)

возвращает 8,29000000000001E-02, а не 0.0829, чё за глюк?
замутил скрипт следующего содержания:

Randomize
chislo1 = "0,"&Int(Rnd * 10000)
Randomize
chislo2 = "0,"&Int(Rnd * 10000)
MsgBox(chislo1&"-"&chislo2&"="&chislo1-chislo2)

Обычно считает нормально, но попадаются и вышеизложенные казусы
перерыл весь интернет, пробовал разные типы переменных, вопрос остается открытым...

Кодинг, как много в этом слове...

2

Re: VBS: Непонятный подсчёт

MsgBox CSng(0.8515 - 0.7686)
MsgBox Round(0.8515 - 0.7686,4)

Как вариант. На сколько я понимаю, дело просто в точности отображении значения.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: VBS: Непонятный подсчёт

Xameleon пишет:
MsgBox CSng(0.8515 - 0.7686)
MsgBox Round(0.8515 - 0.7686,4)

Как вариант. На сколько я понимаю, дело просто в точности отображении значения.

То, что надо! Спасибо! +100 очков

Кодинг, как много в этом слове...

4

Re: VBS: Непонятный подсчёт

pad0nak пишет:

возвращает 8,29000000000001E-02, а не 0.0829, чё за глюк?

Это не глюк, а научный формат отображения вещественных чисел. "E-02" означает, что 8.29 надо разделить (поэтому минус) на 10 в квадрате (2). Этот формат очень полезен для научных расчётов, когда вы работаете со слишком малыми или слишком большими числами.