@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) несоответствие ожидаемому типу.
Как исправить?
  • Вопрос задан
  • 23 просмотра
Решения вопроса 1
bopoh13
@bopoh13
VBA, Ruby (noob), analytic
  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
Проверьте, что возвращает формула в функции f и посмотрите, соответствует ли это определению Single:

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


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

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

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