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