想法就不对。提问嘛,最好先说效果,再说思考。你要先定,精度是 2 位小数。不是大于0.01 ,而是 大于等于0.01。在这两个前提下:设总金额为 S ,总人数为 N ,是小金额为 M 。( M = 0.01 )首先检查, M * N >= S ,否则无法分配。计算上,先定每个人已有 M ,剩下的金额就是 S - M * N 。问题转化为 S - M * N 怎么分配。这个就简单了,每次迭代,取 [0, L] 即可, L <= 0 ,不用迭代了。 L = S - M * N - sum(Pn) , Pn 为第 N 个人在 M 基础上多出的金额。