Квадратный корень

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Квадратный корень

Сообщение skord » 12.11.2004 (Пт) 17:17

Привет всем! Подскажите плз как получить квадратный корень числа на VB6. Буду очень блогадарен.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.11.2004 (Пт) 17:21

Sqr

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 12.11.2004 (Пт) 22:57

Или Num ^ (1 / 2) :)

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 14.11.2004 (Вс) 18:24

А самое интересное произойдет, если выполнить следующий код:
Код: Выделить всё
Debug.Print Sqr(2)-2^(1/2)
8)
Так что, ежели нужна точность, юзай длинную арифметику с разложением в ряды! :)
Листинги не горят!

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 14.11.2004 (Вс) 18:32

Произойдет "0" :)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 14.11.2004 (Вс) 20:53

А можно ещё методом Ньютона :) Товарищ такой был.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Samovar
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 111
Зарегистрирован: 23.05.2004 (Вс) 8:13

Сообщение Samovar » 15.11.2004 (Пн) 2:55

А можно и так:

dim x as double
dim nSquareRoot as double

x=3.14
nSquareRootX=exp(0.5*log(x))
:shock:
Ученье - свет, неученых - тьма.

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 16.11.2004 (Вт) 20:14

A.A.Z. писал(а):Произойдет "0" :)

Не произойдет. Вы пытались это сделать? У меня в VB6 получается величина порядка 10^-17.
Листинги не горят!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.11.2004 (Вт) 20:39

Faust писал(а):
A.A.Z. писал(а):Произойдет "0" :)

Не произойдет. Вы пытались это сделать? У меня в VB6 получается величина порядка 10^-17.
Произойдёт "0"; я пытался.
У тебя, поди, антикварный Pentium-I с ошибкой деления? :-D
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 16.11.2004 (Вт) 23:36

tyomitch писал(а):...
У тебя, поди, антикварный Pentium-I с ошибкой деления? :-D

Я так понимаю, месье слишком молод, чтобы быть в курсе деталей этой, тем не менее, довольно известной ошибки. Что ж, я добавлю свои 5 копеек...
Кинь на форму баттон и текст. Кинь в код вот это:
Код: Выделить всё
Private Sub Command1_Click()
Dim First As Double, Sec As Double, Res As Double
First = 2
Sec = 2
Res = Sqr(First) - Sec ^ 0.5
Me.Text1.Text = CStr(Res)
End Sub

На выходе мой, чуть менее "антикварный", AMD K6-233 (в данном случае разница заключается в принципиальном отсутствии этой ошибки) выдал следующее:
-9,6710833785707E-17

Эта ошибка проявляется, во-первых, при крайне узком диапазоне входных значений, а во-вторых, она не имеет никакого отношения к VB, т.к. флаг "Remove Safe Pentium™ FDIV Checks" в настройках оптимизации компиляции проекта по умолчанию снят, следовательно, в пустом проекте по дефолту эти проверки присутствуют и, при случае, ошибки деления исправляются.
Ты проверь, проверь. А только потом говори...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.11.2004 (Ср) 2:01

Вот этот вот код:
Код: Выделить всё
Debug.Print Sqr(First) - Sec ^ 0.5

- выдаёт 0.

В начальном примере Faust-а было именно Debug.Print; без промежуточной переменной.

Так что я проверил, прежде чем говорить; твой сарказм совершенно неуместен.
При чём здесь мой возраст - тем более не понял.
Изображение

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 17.11.2004 (Ср) 7:26

tyomitch
Месье - критик :)
Придраться тут совершенно не к чему :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 17.11.2004 (Ср) 7:28

Шо интересно...
Мой Athlon XP 3000+ выдал аналогичный результат:
Васик писал(а):-9.6710833785707E-17
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 17.11.2004 (Ср) 7:28

Не иначе заговор АМДешников :mrgreen:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 17.11.2004 (Ср) 16:51

Нет, это конечно никакой не заговор.

Полагаю, имеет смысл дождаться Фауста и узнать, что же именно он имел в виду, т.к. в окне Immediate я тоже получил ноль. Другое дело, я не уверен, что в этом режиме вычисления производятся с двойной точностью...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 22

    TopList