Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Недопустимый вызов процедуры или параметра Добавлено: 12.05.09 09:17  

Автор вопроса:  lisrenegade
Собственно, функция представляет собой следующий код:
stepen = ((4 - x) ^ (1 / 5))
, где x=5.

На калькуляторе все прекрасно считается. Но вот Visual Basic выдает ошибку.

Что не так тут?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 12.05.09 10:18
Корень пятой степени из минус одного по сути. Поковырял немножко и понял: оно не извлекает корни из отрицательных чисел. А потом даже вьехал почему.

Когда ты пишеш 1/5 VB не воспринимает это как "одна пятая". Он вычисляет то, что в скобках и подставляет 0,2. А когда возводит в степень, то возводит в 0,2, т.е. в 2/10. То есть сначала извлекает корень десятой степени (который нахер не извлекается из отрицательных чисел), а затем возводит в квадрат. Вот и все.

ЗЫ: Это только мое предположение по поводу алгоритма вычислений VB, если я где не прав, плиз не рыпайтесь.

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 12.05.09 10:46
^Operator
Syntax
result = number^exponent
A number can be negative only if exponent is an integer value.

number может быть отрицательным только в том случае, если exponent имеет целое значение.

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 12.05.09 17:13
Юзай std::complex, там нет таких надуманных проблем.

Ответить

Номер ответа: 4
Автор ответа:
 lisrenegade



Вопросов: 3
Ответов: 3
 Профиль | | #4 Добавлено: 12.05.09 21:40
Я только не пойму, что ты предлагаешь?

Выкопал ссылку http://msdn.microsoft.com/ru-ru/library/zh100ckf.aspx . И получается, что мы делаем все верно. А он все равно ругается.

Ответить

Номер ответа: 5
Автор ответа:
 lisrenegade



Вопросов: 3
Ответов: 3
 Профиль | | #5 Добавлено: 12.05.09 22:33
Нашел ответ в одном исходнике.
  1. Function Root(X1 As Double) As Double
  2.  
  3. If X1 = 0 Then
  4.     Root = 0
  5.     Exit Function
  6. End If
  7.  
  8. Root = 10 ^ ((Log(Abs(X1)) / Log(10)) / 5)
  9. If X1 < 0 Then
  10.     Root = -Root
  11. End If
  12.  
  13. End Function

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 13.05.09 08:33
Что тут думать, взять number по модулю, вычислить выражение и сделать его с нужным знаком.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам