@aab137

Как исправить ошибку несоответствия типов аргументов функции?

Есть код
Function f(x As Single) As Single
    f = (100 - x) * (75 - x) * x
End Function
Sub program()
    eps = 0.00001
    l = 0 / 2
    r = 75 / 2
    Do While r - l > eps
    m = (r + l) / 2
    If (f(l) - f(l + eps)) * (f(m) - f(m + eps)) > 0 Then
        l = m
    Else
        r = m
    Loop
    Cells(1, 1).Value = (r + l) / 2
End Sub

Выдает ошибку, что в f(l) несоответствие ожидаемому типу.
Как исправить?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
honor8
@honor8
Принципы быстродействия VBA в описании
  1. Всегда объявляйте перемененные и тип Dim l As Single, m As Single
  2. Оператор If имеет конструкцию If...Else...End If
  3. Function f(ByVal x As Single) As Single
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Проверьте, что возвращает формула в функции f и посмотрите, соответствует ли это определению Single:

Тип значения Single представляет собой 32-разрядное число с одинарной точностью и значениями от отрицательного 3.402823 E38 до положительного 3.402823 E38, а также положительный или отрицательный нуль


Если не соответствует, то потребуется либо приведение типа, либо смена типа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы