↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Временно не работает,
как войти читайте здесь!
Margarido
вчера в 12:00
Aa Aa
#фанфикс_знает_все

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

но есть нюанс
Из любви к екселю попробуйте инверсировать формулу: если не равно, то ложь, истина
Margarido
Heinrich Kramer
А нет, сейчас влезла пробовать...
До 5 знака - и всё отлично, уже у него истина. 4 и 6 - упс. Визуально 4 знака хватало.
Ну и в целом совет от программиста: никогда не сравнивать числа с плавающей точкой, только целочисленные.
Можно нажать "Вычислить формулу" и по шагам посмотреть где начинают расходиться данные.
=ЕСЛИ(C19-(СУММ(C15:C17))<0,00005;ИСТИНА;ЛОЖЬ)
=ЕСЛИ(C19-(СУММ(C15:C17))<0,00005;ИСТИНА;ЛОЖЬ)

=ЕСЛИ(ABS(C19-(СУММ(C15:C17)))<0,00005;ИСТИНА;ЛОЖЬ)
Heinrich Kramer
а модуль зачем? А... понял.
Heinrich Kramer

=ЕСЛИ(ABS(C19-(СУММ(C15:C17)))<0,00005;ИСТИНА;ЛОЖЬ)
Точно)
Теmр
Ну и в целом совет от программиста: никогда не сравнивать числа с плавающей точкой, только целочисленные.
Увы, целочисленные в экономике - та еще редкость.
LilyofValley
Можно нажать "Вычислить формулу" и по шагам посмотреть где начинают расходиться данные.
Ну вряд ли это можно назвать ошибкой, это именно округление.


BufferOverflow
Heinrich Kramer
Саггаро Гиерри
Восхитительно! Модуль. Спасибо, дам задание студентам, чтоб поискали способ убрать этот косяк с округлением. Буду подразумевать ABS как правильный ответ.
Margarido
задача без "нюанса" - не задача ;)
ПОИСК
ФАНФИКОВ











Закрыть
Закрыть
Закрыть