что не так с экселем?

Обычная операция сложения вычитания до одного прекрасного мемента всё хорошо, потом невесть откуда на двенадцатом месте после запятой нарисовалась единичка.
скрин прилагаю.
Буду признательна, если подскажете, как с этим бороться.
ЗЫ: везде, где есть деление - стоит =округл(х;2) но в даном случае деления и близко нет.
 

Вложения

  • эксель тупит или я.jpg
    эксель тупит или я.jpg
    305,9 КБ · Просмотры: 25

MIP-ZmeY

Император
Могу предложить для гарантии делать сразу стартовое округление там где получаем сумму детальных колонок
1594585624591.png
заменит на
Код:
=ОКРУГЛВВЕРХ(СУММ(H92:IV92);2)
 
Может конечно из-за того что нету второго файла

если начать тянуть второй-третий-двадцатый файл - то придется всю свою бухгалтерию за 5 лет на форум выгрузть))
да и не другом файле дело: у меня в отрыве от остальных файлов показывает ту же ошибку (что на скрине) если форматнуть ячейки обратно до 30 цифр после запятой - то никак не норм. и "истина" - не ИСТИНА
 
Обычная операция сложения вычитания до одного прекрасного мемента всё хорошо, потом невесть откуда на двенадцатом месте после запятой нарисовалась единичка.
скрин прилагаю.
Буду признательна, если подскажете, как с этим бороться.
ЗЫ: везде, где есть деление - стоит =округл(х;2) но в даном случае деления и близко нет.
дело не в делении.
вещественное число в десятичной системе счисления не всегда можно точно представить в двоичной системе.
Т.е., грубо говоря, 2.0 + 2.0 может дать 4.000001 или 3.999999. Это всегда нужно помнить!

Если вам результат нужен только для визуального отображения - задайте формат ячейки с 2 знаками после запятой.
Если вы результат потом дальше с чем-то сравниваете - не используйте точное сравнение! Сравнивайте с диапазоном.

ЕСЛИ(A1=0;"да";"нет") - это неправильно построенное условие, в некоторых случаях оно может не срабатывать

ЕСЛИ(A1>-0,00001 & A1<0,00001;"да";"нет") - вот примерно так нужно сравнивать (разрядность выбираете в зависимости от желаемой точности)
 

MIP-ZmeY

Император
Вы опять сначала пишете, а потом думаете.
Сравнение с нулём - это частный случай.
Если нужно сравнить, например, с 123.45 - то ваше "удобнее" уже не прокатит.
 

MIP-ZmeY

Император
Издеваетесь?
Вы опять сначала пишете, а потом думаете.
Сравнение с нулём - это частный случай.
Это скорее про Вас!
1. Сами привели частный случай
ЕСЛИ(A1>-0,00001 & A1<0,00001;"да";"нет")
2. Потом поленились посмотреть на формулу!

Если нужно сравнить, например, с 123.45 - то ваше "удобнее" уже не прокатит.
Что мешает Вам в качестве A1 использовать не число1 а разность между числом1 и числом2?
ЕСЛИ(ABS( <результат_вычислений> - <число_для_сравнения> )<EPS;"да";"нет")
Если есть возможность стандартизации то нужно это использовать!
 
Последнее редактирование:

Теомах

Аккаунт заблокирован
Аккаунт заблокирован
Обычная операция сложения вычитания до одного прекрасного мемента всё хорошо, потом невесть откуда на двенадцатом месте после запятой нарисовалась единичка.
скрин прилагаю.
Буду признательна, если подскажете, как с этим бороться.
ЗЫ: везде, где есть деление - стоит =округл(х;2) но в даном случае деления и близко нет.
Ошибка компьютерной арифметики. Связана с тем, что конечная десятичная дробь может оказаться бесконечной двоичной. Про "2.0 + 2.0 может дать 4.000001 или 3.999999" Маша_без_медведя немного загнула, с целыми числами такой ошибки не будет даже при хранении их в виде вещественных.
Способов бороться три:
1) Описан выше: округлять визуально, при сравнении использовать неравенства.
2) Добавлять в формулу округление до нужной точности. При бухгалтерских расчетах не меньше 2 и не больше 5 знаков после запятой.
3) Использовать целые числа: хранить данные в форме "N копеек", а в рубли переводить только окончательные результаты.
 
Верх