You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现按指定比例拆分数值且四舍五入后总和与原数一致的算法

按指定比例拆分数值并保证总和匹配的算法需求

我需要将一组数值按指定比例(32%/68%)拆分,设计算法使拆分后四舍五入的结果相加等于原数总和。直接拆分法无法满足需求(例如22/48与23/47的差异)。

Qty     32%     68%     Rounded Rounded   Adjusted Adjusted
10      3.2     6.8     3       7         3        7
10      3.2     6.8     3       7         3        7 
5       1.6     3.4     2       3         2        3
5       1.6     3.4     2       3         1        4
10      3.2     6.8     3       7         3        7
10      3.2     6.8     3       7         3        7    
5       1.6     3.4     2       3         2        3    
15      4.8     10.2    5       10        4        11
-------------------------------------------------------------   
70      22.4    47.6    23      47  70    21       49
        22      48 

需求的灵活性在于:若无法完全匹配目标比例,拆分结果需尽可能接近该比例。例如,若四舍五入后的总和比原数多1,需要减去1,但该调整应作用于哪个拆分项?以原数70为例,其理论拆分为22.4/47.6,那么22/48与23/47哪个更接近32%/68%?若22/48更优,则需从某一项的第一部分减去额外值,且调整后的小拆分项需尽可能贴近32%/68%。似乎调整应作用于数值最大的项,以降低对比例的影响,比如将5/10调整为4/10,而非将2/3调整为1/4。

更重要的约束是:所有小拆分项相加后的整体拆分结果需尽可能接近32%/68%,且总和必须等于原数。

是否存在四舍五入后的小拆分项总和小于原数的情况,此时需要添加数值而非减去?

更新内容

我已实现Gabe Sechan的建议,调整后的列相加结果等于原数,但最终拆分为21/49,不如22/48贴近32%/68%。我认为若不优化数值的处理顺序,这就是当前可行的解决方案。

内容的提问来源于stack exchange,提问作者Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:20:26