Написать пост

OlegTar

Неправильно считаются проценты в опросе

При опросах, если сложить проценты, не всегда будет ровно 100%

Пример опроса:


Решается вообще-то просто: Если нужно посчитать проценты для N вариантов ответов, то считаем проценты для N-1 вариантов (без последнего),
а проценты последнего, N-го варианта, рассчитываем как 100 - сумма процентов предыдущих вариантов.

Возможно, даже этот алгоритм можно улучшить. Предложения приветствуются.

Тест
1
20
22.0%
2
17
18.7%
3
19
20.9%
4
10
11.0%
5
25
27.5%
проголосовал 91 пользователь
5 комментариев нравится избранное
  • MaxKadett
    14 мая 2013 в 01:53
    Скандалы. Интриги. Расследования.
    • OlegTar
      14 мая 2013 в 01:56
      Показать то, что скрыто под катом.
  • renic
    13 14 мая 2013 в 02:42
  • renic
    1 14 мая 2013 в 02:44
    Вот когда у нас из-за округления копеек по НДС при конвертации валют набегали суммы в десятки тысяч рублей - вот это стоило каких-то телодвижений. А тут какой-то жалкий 0.1%, причину возникновения которого понимает каждый и делает скидку, не думаю, что он стоит внимания.
  • gugglegum
    3 14 мая 2013 в 07:33
    А почему именно последний вариант ответа должен принимать на себя груз исправления ошибки, накопившейся при округлении всех остальных вариантов? На мой взгляд всё правильно. При округлении далеко не всегда должно получаться 100%, небольшие расхождения в пределах порядка округления допустимы.
    • sniffersly
      14 мая 2013 в 08:49
      Можно было бы итоговую ошибку(0.1%) разбросать по всем вариантам. Но опять непонятно, как это сделать аккуратно без остатка.
      • gugglegum
        1 14 мая 2013 в 10:06
        В принципе, для каждого ответа после округления можно вычислить размер ошибки, которую даёт округление, и перенести лишнюю 0.1 в тот ответ, где ошибка округления максимальная. Т.е. есть у нас, к примеру, есть 3 варианта ответа, которые получили:

        50.58%
        29.55%
        19.87%.

        При округлении получится 50.6%, 29.6% и 19.9%, что в сумме даёт как раз 100.1%. Находим ошибку округления для каждого ответа:

        50.58 - 50.6 = -0.02
        29.55 - 29.6 = -0.05
        19.87 - 19.9 = -0.03

        Как видно, у второго варианта отклонение ошибка округления наибольшая. Вот его-то мы и корректируем, вычитая из него 0.1, получаем на выходе:

        50.6%
        29.5%
        19.9%

        В сумме получается ровно 100%. Смысл такой коррекции в том, что для 29.55 наиболее справедливо округление до 29.5 (нежели до 29.6), чем для всех остальных.
        • sniffersly
          14 мая 2013 в 13:02
          замечательно
        • OlegTar
          14 мая 2013 в 16:24
          а если будут одинаковые ошибки округления?
          • gugglegum
            14 мая 2013 в 16:36
            Ну, если ошибка одинаковая, тогда брать любой. Первый, последний, какой больше нравится.
            • OlegTar
              14 мая 2013 в 19:32
              а может раскладывать ошибку на двое вариантов?
              • gugglegum
                15 мая 2013 в 00:20
                Каким образом вы это собираетесь делать? Вам нужно куда-то запихнуть или убрать 0.1, округляя числа до десятых долей. Меньше, чем 0.1 вы накинуть не можете, накинете 2 раза -- получите ту же ошибку, только с другой стороны.
                • OlegTar
                  15 мая 2013 в 01:06
                  Может, так получится, что два варианта опроса с одинаковым количеством голосов будут иметь разные проценты?
    • OlegTar
      14 мая 2013 в 19:32
      >>А почему именно последний вариант ответа должен принимать на себя груз исправления ошибки
      потому что он крайний)
  • sniffersly
    2 14 мая 2013 в 08:20
    там round походу: то, что меньше .5 округляется вниз, остальное - вверх.

    во, так лучше? :


    хотя не, точности все равно недостаточно((
  • Stromgard
    14 мая 2013 в 15:31
    Здесь должна быть шутка про 146%
    • OlegTar
      1 14 мая 2013 в 16:23
      ты уже написал)
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста, или зарегистрируйтесь.