@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) несоответствие ожидаемому типу.
Как исправить?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 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, а также положительный или отрицательный нуль


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

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

Войти через центр авторизации
Похожие вопросы