LINUX.ORG.RU

Округление и сравнение в Libreoffice calc

 ,


0

1

Тыкните меня в статью или в документацию, я сам не могу найти… Сравниваю два числа. Одно статическое (просто вбитое в ячейку), вроде 2,431, а второе расчетное с округлением через ROUND до 3 цифр после запятой, т.е. тоже типо 2,431, а до округления оно могло быть, скажем, 2,430991. Мне нужно, чтобы если я сравниваю два числа с учетом округления ROUND’ом и они одинаковые до 3 цифр после запятой, в формуле с if выполнялось условие что они равны. Сейчас если я сравниваю, всегда выдает что они не равны. Мне нужно математическое округление, но я на всякий попробовал разные функции округления, которые бы выдавали одинаковые цифры после запятой для разных пар чисел - ROUNDUP, ROUNDDOWN, TRUNC, CEILING и т.д, но везде эта проблема всплывает.

Можно это как-то по простому сделать, при условии сравниваются всегда попарно 2 числа, а этих пар много, т.е. нужен авторасчет. У всех пар единое форматирование - 3 цифры после запятой. Единственное, что я нашел - опция ‘Precision as shown’. Вроде как заставляет кальк считать именно с учетом округления как число выглядит после форматирования, а не какое оно на самом деле до форматирования, но что-то оно не работает (пробовал выкл/вкл, перезапускать либру и документ).

Ответ на: комментарий от SkyMaverick

А можешь поробовать как у меня добавить условие, например, с другим форматированием, и использовать ‘Cell value - less than’. Как оно у тебя отрабатывает? Прямо на ячейке со статическим значением.

kardjoe ()

Без понятия, как там работает. А почему бы не сравнивать разность с малым числом, или не округлять ее и сравнивать с нулем?

boowai ★★★★ ()
Ответ на: комментарий от SkyMaverick

У меня разные кейсы. Где-то просто неравно, где-то меньше/больше. Я тебе скинул с меньше, где не работает как мне хочется.

kardjoe ()
Ответ на: комментарий от kardjoe

Ну поставь не «неравно», а «меньше» в условном форматировании. Короче, проблема ИМХО не в округлении, а в том, что в условии форматирования дичь. Убери вот это '1'! - всё работает.

SkyMaverick ★★★★ ()
Последнее исправление: SkyMaverick (всего исправлений: 1)

Сравни абсолютное значение разницы значений с нужной тебе «эпсилон», например, 0.001. Если разница меньше, то считай, что равны.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от SkyMaverick

Это автоформатирование либры с указанием на названием листа, это не мои рученки. Ты прав, если убрать название листа из формулы, то вроде все работает, но если ты сейчас введешь очевидно удовлетворяющие значение, например, я поменял G2 на 11000, что меньше, чем 13080 в F2, то ячейку не подсветит (у меня не подсветило). Значит не работает…

kardjoe ()
Ответ на: комментарий от SkyMaverick

Я затупил ) Да, без указания листа работает. Надо, наверное, в багтрекер написать, что автоформатирование ренжей ячеек косячное. Спасибо.

kardjoe ()
Последнее исправление: kardjoe (всего исправлений: 1)
Ответ на: комментарий от Kompilainenn

7.0.4.2 похоже на баг, да. В этом файле, если в условном форматировании лист указан, то красит неправильно.

SkyMaverick ★★★★ ()
Ответ на: комментарий от Kompilainenn

Да, сегодня вечером отправлю. Ссылку оставлю тут.

kardjoe ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.