Проблемы округления чисел
Вот посчитал доли каждого числа в процентах.
Если руками складывать эти проценты, то 100% не получаем. Подскажите, чем считать эти доли и как их округлять, чтобы корректные проценты получить
3632 15,66%
4490 19,36%
2633 11,35%
9833 42,39%
2609 11,25%
100,01%
Дело в excel
Вот посчитал доли каждого числа в процентах.
Если руками складывать эти проценты, то 100% не получаем. Подскажите, чем считать эти доли и как их округлять, чтобы корректные проценты получить
3632 15,66%
4490 19,36%
2633 11,35%
9833 42,39%
2609 11,25%
100,01%
А что тебе, одна сотая не нравится, нормальная ошибка округления. Они есть и корректные. Ты же получешь число с периодом после запятой, отбрасываешь(округляешь) лишнюю часть и хочешь получить ровное число... нет конечно, так не получится, это число будет с такой ошибкой округления как и те числа из которых его сложил.
В физ. экспериментах есть даже такой тип погрешности связанный как раз с округлением.
Хочешь получить числа с ошибкой округления 0,001 - бери доли с тысячными потом округляй до сотых и вот твое ровное число.
Т.е. подитожим, когда есть округление, то результат-сумма может отличаться на плюс или минус 1 (сотую, если округляешь по сотым; тысячную, если окргуляешь по тысячным). Т.е. ты просто всем говоришь, что твои расчеты сделаны с точностью до сотых долей процентов и все, к тебе больше никаких претензий нет, это математика, против нее не попрешь. А то что ты хочешь - это уже называется подгонка, спец. на одну сотую уменьшить одну из долей, чтобы получить ровно 100.
Т.е. подитожим, когда есть округление, то результат-сумма может отличаться на плюс или минус 1 (сотую, если округляешь по сотым; тысячную, если окргуляешь по тысячным). Т.е. ты просто всем говоришь, что твои расчеты сделаны с точностью до сотых долей процентов и все, к тебе больше никаких претензий нет, это математика, против нее не попрешь. А то что ты хочешь - это уже называется подгонка, спец. на одну сотую уменьшить одну из долей, чтобы получить ровно 100.
Я так тоже думаю. Просто хотел узнать, может есть что-то. Ну раз нет. То оставим все как есть Благодарю
Я так тоже думаю. Просто хотел узнать, может есть что-то. Ну раз нет. То оставим все как есть Благодарю
Да ты не волнуйся, вон бухгалтерия у нас денежки считает (которые как известно счет любят) и ничего, тоже округляет до копейки и плюс минус копейках при таких расчетах ошибкой не являются, а когда 101 форму сдают, там суммы в тыс. рублях указываются, сам понимаешь какая ошибка появляется, а эта отчетность сдается в ЦБ ;-)
Дело в excel
Вот посчитал доли каждого числа в процентах.
Если руками складывать эти проценты, то 100% не получаем. Подскажите, чем считать эти доли и как их округлять, чтобы корректные проценты получить
3632 15,66%
4490 19,36%
2633 11,35%
9833 42,39%
2609 11,25%
100,01%
Не понял, что хотел сказать, gacol
Дело в excel
Вот посчитал доли каждого числа в процентах.
Если руками складывать эти проценты, то 100% не получаем. Подскажите, чем считать эти доли и как их округлять, чтобы корректные проценты получить
3632 15,66%
4490 19,36%
2633 11,35%
9833 42,39%
2609 11,25%
100,01%
Если это для красивого отчета, то я поступаю так.
У самого большого числа (42.39%) отнимаю/прибавляю разницу (0.01%).
И этим избавляю вышестоящих от лишних вопросов, поскольку складывать они умеют и любят. 8)
Если это для красивого отчета, то я поступаю так.
У самого большого числа (42.39%) отнимаю/прибавляю разницу (0.01%).
И этим избавляю вышестоящих от лишних вопросов, поскольку складывать они умеют и любят. 8)
Не хочется сидеть и проверять массивы цифр :-)
Лучше сделаю поясниловку: погрешность округления такая-то :-)
Не хочется сидеть и проверять массивы цифр :-)
Лучше сделаю поясниловку: погрешность округления такая-то :-)
Если начальство читает поясниловки и слова "погрешность" "округление" не вызывает у него отрыжку, то в самом деле лучше.
А самому проверять массивы не надо - есть же функции МАКС НАЙТИ...
А самому проверять массивы не надо - есть же функции МАКС НАЙТИ...
Так ведь нужно еще знать прибавлять или отнимать величину погрешности
Разрешим округлять числа не в ближайшую сторону, а в любую - например 14.2 можно округлить как к 14, так и к 15 (назовем такую операцию квазиокруглением). Я тут в примерах округляю до целых, но можно и до сотых - это не имеет значения. Тогда можно квазиокруглить все числа и их сумму так, что равенство сохранится. Пример
1.4 + 1.4 = 2.8
При обычном округлении:
1 + 1 = 3
При квазиокруглении:
1 + 1 = 2 или 1 + 2 = 3
Это довольно мощный способ:
Например, можно квазиокруглить последовательность
а_1,а_2,...,а_N так, что будут сходиться не только общая сумма, но и все суммы подряд идущих чисел:
a_i + a_{i+1} + ... + a_{i+k}
А еще можно квазиокруглить таблицу чисел так, что будут сходиться все суммы по столбцам, строкам и общая сумма.
Я как-то реализовывал эти алгоритмы для одной бухгалтерии. Тётушки были очень удивлены - они думали, что такая "ошибка округления" не убиваема - а тут фокус-покус - и всё сходится. При этом они совершенно спокойно воспринимают тот факт, что 13р 23.2коп. округляют к 13р 24 коп.
В общем, если кого интересует, могу поподробней рассказать, как это делается...
У этой проблемы есть весьма интересное развитие.
В общем, если кого интересует, могу поподробней рассказать, как это делается...
Интересно посмотреть на это творение
Интересно посмотреть на это творение
Вот так надо округлять последовательности, чтобы сходились все суммы подряд идущих чисел (в том числе и общая). Округление таблицы - гораздо более сложный алгоритм. К сожалению, в реализованном виде у меня его нет (не нужно было). Поэтому могу только рассказать сам алгоритм (если кому-то это нужно, разумеется)...
Так ведь нужно еще знать прибавлять или отнимать величину погрешности
И знать не надо, если
Погрешность = 100% - СУММА()
то ее надо всегда прибавлять.
Вообще это самый простой способ. Когда элементов слишком много, ошибка может быть достаточно большой. Тогда я погрешность распределяю по тем элементам, которые при округлении близки к границе, например 1.449 и 1.338 дают по 1.4, но первое с меньшей потерей точности можно заменить на 1.5, если надо.
Вот так надо округлять последовательности, чтобы сходились все суммы подряд идущих чисел (в том числе и общая). Округление таблицы - гораздо более сложный алгоритм. К сожалению, в реализованном виде у меня его нет (не нужно было). Поэтому могу только рассказать сам алгоритм (если кому-то это нужно, разумеется)...
Требование к сходимости подряд идущих слагаемых, кстати, не является бесполезным:
Например такая таблица:
Иванов октябрь валенки 1.5
Иванов октябрь калоши 2.3
Иванов ноябрь валенки 0.9
......
Петров декабрь калоши 5.6
Так вот все продажи Иванова, или все продажи Иванова в декабре - это как раз суммы подряд идущих слагаемых.
Требование к сходимости подряд идущих слагаемых, кстати, не является бесполезным:
Например такая таблица:
Иванов октябрь валенки 1.5
Иванов октябрь калоши 2.3
Иванов ноябрь валенки 0.9
......
Петров декабрь калоши 5.6
Так вот все продажи Иванова, или все продажи Иванова в декабре - это как раз суммы подряд идущих слагаемых.
Это интересно Посижу, подумаю над этим ,если время будет, конечно