Рассмотрим четыре процента ниже, представленные как float
numbers:
13.626332%
47.989636%
9.596008%
28.788024%
-----------
100.000000%
Мне нужно представить эти проценты как целые числа. Если я просто использую Math.round()
, я в итоге получаю 101%.
14 + 48 + 10 + 29 = 101
Если я использую parseInt()
, я получаю в итоге 97%.
13 + 47 + 9 + 28 = 97
Какой хороший алгоритм представляет любое количество процентов в целом, сохраняя при этом 100%?
Изменить. После чтения некоторых комментариев и ответов есть много способов решить эту проблему.
В моем сознании, чтобы оставаться верным номерам, "правильным" результатом является тот, который сводит к минимуму общую ошибку, определяемую тем, сколько ошибок округление будет вводить относительно фактического значения:
value rounded error decision
----------------------------------------------------
13.626332 14 2.7% round up (14)
47.989636 48 0.0% round up (48)
9.596008 10 4.0% don't round up (9)
28.788024 29 2.7% round up (29)
В случае равенства (3.33, 3.33, 3.33) может быть принято любое решение (например, 3, 4, 3).