Страницы: Пред. 1 2
RSS
Подсчёт количества итераций на листе.
 
Цитата
Ilya66 написал:
если для вычислений вводятся числа с точностью, скажем, до 5-го знака, то "шум" в каком-нибудь шестнадцатом разряде, образующийся при вычислениях есть мусор, и должен по умолчанию отбрасываться.
а если вводятся числа с точностью до целого, то по вашей логике 2/3=1 ибо остальное есть мусор
Цитата
Ilya66 написал:
Просто по обычной логике
:)
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Ilya66 написал:
P.S. Проблема решена "в лоб" - сравнение времени расчётов при числе итераций = х(заданной для этого листа по умолчанию) и 3х.
Вылезли недостатки такого решения - более-менее работает при достаточно объёмных вычислениях. А при простых заданиях итераций затрачивается мало, вычисляется быстро, и таймер не успевает толком запуститься. Время нормально не отслеживается, то измеряет какие-нибудь 7 мс, то тут же вообще 0. Пришёл к другому решению:
Код
Sub ill66()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.MaxIterations = 200 ' число итераций должно быть гарантированно больше максимально требуемого раза в 1,5.

здесь запускаем свои вычисления

qz = [B17] + [Q22] + [Y54] + .... 'записываем сумму вычисленных значений в контрольных ячейках.
Application.MaxIterations = 199 ' уменьшаем число итераций на 1

снова запускаем вычисления
qs = записываем сумму значений в контрольных ячейках
If qz <> qs Then ' если хоть в одной контрольной ячейке результаты вычислений при 200 и 199 итерациях отличаются, сумма будет разной
MsgBox ("BAD!")
Else
MsgBox ("OK")
End If

Application.MaxIterations = 200
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub  
Это работает стабильно и быстро. Возможно, при каких-то вычислениях придётся перед суммированием лепить Round на каждую контрольную ячейку, дабы откинуть мусор, объявить переменные, и т.д. Мне не понадобилось.
Страницы: Пред. 1 2
Наверх