如何在 C# 中正确地多次拆分/除以整数?

Asp*_*1re 2 c# math division integer-division

假设我有21875as totalQuantityNumber

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

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

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

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

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

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

Den*_*nis 5

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

要实现您想要的效果,您需要计算最后一个比例作为总数与所有先前比例之和的差值。

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

总计: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 天)= 总计