可能重复:
Proportionately distribute (prorate) a value across a set of values
我一直在寻找一种算法,根据C#中一年中的天数来每月分配总金额,以便所有比例的总和等于总价值。
一年内的日期范围,总金额。
示例:
for a value 19550 and date range 9/1/2011 to 6/30/2012
September 1,929.28
October 1,993.59
November 1,929.28
December 1,993.59
January 1,993.59
February 1,864.97 - 28 days
March 1,993.59 - 31 days
April 1,929.28 - 30 days
May 1,993.59
June 1,929.28
但总数为19,550.04,比总数多.04。
答案 0 :(得分:1)
可能的相关SO答案:Proportionately distribute (prorate) a value across a set of values
奇怪它与你的问题具有相同的标题......
答案 1 :(得分:1)
与Ricky一起回答:
并非总是可以在特定时间段内均匀分配给定量。实际上,在给定的时间段内数量均匀分布是非常罕见的。
这通常通过允许最后一个数字小于平均正常数来弥补差额来计算。
例如,在您的情况下,6月的金额应为1929.24。
通常,您在构建图表时会跟踪金额分配。一旦你到达终点,你可以选择。允许金额更高或者再支付一笔更低的金额。
基本上,您需要更改生成每月金额的算法。在那里签一份,以确保您计算的金额仍然可用。如果它没有取两个值中较低的值。
答案 2 :(得分:0)
听起来你已经有了比例分配的代码;但是你正在四舍五入到最近的分数,所以你现在所需要的只是得到你想要的总和。我有两个想法: