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

Пароль

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

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











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