如何在 C# 中多次正确 split/divide 一个整数?

How can I split/divide an integer number multiple times correctly in C#?

假设我有 21875 作为 totalQuantityNumber

我需要在 for 循环中将 totalQuantityNumber 拆分多天。第一天 20000,第二天 1875。 最后在我的 for 循环中,我对拆分后的数量求和,以便稍后验证拆分是否正确。 totalSplittedQuantity += splittedQuantity.

在拆分结束时,我验证拆分产品数量的总和是否与最初计划的产品总数ex相同。 totalQuantityNumber== totalSplittedQuantity 应该是 21875 == 21875 但是当数字是奇数时我总是差一个数字。 21875 == 21874。我试图使除法小数化并在最后四舍五入,但问题仍然存在,有时结果也超过了 1。 21875 == 21876.

这是我在循环中的划分: splittedQuantity = splittedDiffDuration * totalQuantityNumber/ totalDuration;

totalDurationsplittedDiffDuration 以分钟为单位。 totalDuration = 120; splittedDiffDuration = 60;

基本上,我从 DateTime 间隔(startDate、endDate)ex 循环遍历每一天。周一至周二 - 在计划前的持续时间内拆分每天的数量。假设周一计划用 60 分钟生产 X 数量,周二同样计划用 60 分钟生产剩余数量。

我是编程新手,数学不太好。我的部门做错了什么?

无论数字类型(整数、小数、浮点数)如何,都会因四舍五入或数字表示而出现错误。

为了达到你想要的效果,你需要将最后一个比例计算为总和与之前所有比例之和的差值。

例如,给定这个总数和这个百分比:

总计:100
第 1 天:30%
第 2 天:17&
第 3 天:53%

比例为:
第 1 天:100 * 30% = 30
第 2 天:100 * 17% = 17
第 3 天:总计 - (Day1 + Day2) = 100 - (30 + 17) = 53.

当然,这会为您提供最后一个结果的近似结果,但这是使此表达式始终为真的唯一方法:

(第 1 天 + 第 2 天 + 第 3 天)= 总计