![]() #фанфикс_знает_все
99%, что никто не ответит, но все же. Дано: таблица в ms excel, формула вида =ЕСЛИ(C19=(СУММ(C15:C17));ИСТИНА;ЛОЖЬ) Алгебраически формулы в ячейках выверены, там действительно будет равенство. Проверка с ЕСЛИ делалась для себя, когда только формировала табличку, для лишней проверки верности введенных формулы. Но ячейка так и осталась. Проблема: при разных исходных данных ЕСЛИ выдает то истину, то ложь. Если смотреть по-человечески, то ЛОЖЬ там не может быть априори. Это из разряда 2+2=4. Я не могу понять, откуда берется 2+2=5 и от нее ЛОЖЬ. Когда-то мне очень мутно объясняли, что это какая-то ошибка в самих экселевских расчетах. Но объяснявший сам пересказывал с чужих слов и не понимал толком, а я тем более не поняла и не запомнила. вчера в 12:00
|
![]() |
|
Margarido
Heinrich Kramer Ну и в целом совет от программиста: никогда не сравнивать числа с плавающей точкой, только целочисленные.А нет, сейчас влезла пробовать... До 5 знака - и всё отлично, уже у него истина. 4 и 6 - упс. Визуально 4 знака хватало. 3 |
![]() |
|
Можно нажать "Вычислить формулу" и по шагам посмотреть где начинают расходиться данные.
|
![]() |
|
=ЕСЛИ(C19-(СУММ(C15:C17))<0,00005;ИСТИНА;ЛОЖЬ)
1 |
![]() |
|
=ЕСЛИ(C19-(СУММ(C15:C17))<0,00005;ИСТИНА;ЛОЖЬ) =ЕСЛИ(ABS(C19-(СУММ(C15:C17)))<0,00005;ИСТИНА;ЛОЖЬ) 4 |
![]() |
|
Heinrich Kramer
а модуль зачем? А... понял. 1 |
![]() |
|
1 |
![]() |
|
Теmр
Ну и в целом совет от программиста: никогда не сравнивать числа с плавающей точкой, только целочисленные. Увы, целочисленные в экономике - та еще редкость.LilyofValley Можно нажать "Вычислить формулу" и по шагам посмотреть где начинают расходиться данные. Ну вряд ли это можно назвать ошибкой, это именно округление.![]() BufferOverflow Heinrich Kramer Саггаро Гиерри Восхитительно! Модуль. Спасибо, дам задание студентам, чтоб поискали способ убрать этот косяк с округлением. Буду подразумевать ABS как правильный ответ. 1 |
![]() |
|
Margarido
задача без "нюанса" - не задача ;) 1 |