Как сделать округленные проценты добавить до 100%
рассмотрим четыре процента ниже, представленные как float номера:
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%?
Edit: после прочтения некоторых комментариев и ответов, очевидно, что есть много способов решить эту проблему.
на мой взгляд, чтобы оставаться верным числам," правильный " результат-это тот, который минимизирует общую ошибку, определяемую тем, сколько ошибок округления будет введено относительно фактического значения:
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).
Comments