Страницы: 1
RSS
Поиск значения при отрицительных и положительных числах
 
Добрый день! Уважаемые специалисты, если вам не затруднит то посмотрите мой прикрепленный файлик. Там поиск значения с помощью функции ПРОСМОТР. Однако результат получается разный если просматриваемый вектор составлен из отрицательных и положительных чисел. Почему то при поиске в векторе из отрицательных чисел значение из вектора результатов соответствует соседнему и более отрицательному аргументу. При поиске в векторе положительных чисел все ищется корректно. Как избавиться от этого недоразумения? (Просматриваемые векторы отсортированы по возрастанию).
 
Дело не в положительных и отрицательных, а в точности представления дробных чисел.
Да, на вид ячейки равны, и если написать формулу =E3-D11, она вернет 0 даже в экспоненциальном формате.
НО если написать формулу =E3-D11=0, она вернет ЛОЖЬ, а =E3-D11<0 вернет ИСТИНА!
То есть D11 все-таки больше E3, поэтому ПРОСМОТР находит предыдущую строку.

В окне Immediate
Код
?[d11]-[e3]
 2,1316282072803E-14 

Как бороться - округлять, например задать в Параметрах "точность как на экране".
Изменено: Казанский - 11.03.2015 10:36:54
 
Добрый день

У вас числа отличаются на очень малую величину (2,1316282072803E-14 )
и вот эта разница и не дает корректно работать функции
 
Казанский, webley, вот как. Спасибо. Поясню. Столбец С с положительными числами создан вручную (температура в Кельвинах), а D методом вычитания из столбца C 273,15. Таким образом получается что Excel неточно вычисляет разницу и использовать такой столбец данных (результат вычитания) не совсем корректно? Можно его как то натурализовать быстро или тоже вручную (автозаполнением) прийдется заполнять?

Кстати, если написать "=E3<D11" или "=E3>D11" и в том и другом случае получаем ложь, а "=E3=D11" получаем истина, но в то же время "E3-D11=0" получаем ложь. Какие то квантовые эффекты получаются..
Изменено: Евгений - 11.03.2015 10:51:35
 
Евгений, вам же сказали - применять функцию округления:
Код
=ОКРУГЛ(350-273,15;2)
 
Михаил С.,Сообщение редактировали. Изначально про округление ничего не было.
Спасибо за помощь, господа. Учту этот опыт в последующей деятельности.
 
Можете поместить в Личную книгу макросов такой макрос и запускать периодически
Код
Sub КоррДроб()
  ActiveWorkbook.PrecisionAsDisplayed = True
  ActiveWorkbook.PrecisionAsDisplayed = False
End Sub
 
только учтите, что "точность как на экране" затрагивает все открытые книги, ЕМНИП
F1 творит чудеса
Страницы: 1
Наверх