微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

假设我有 21875 作为 totalQuantityNumber

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

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

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

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

基本上我从日期时间间隔(开始日期,结束日期)例如循环遍历每一天。周一至周二 - 在计划的持续时间内拆分每天的数量。假设周一计划 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 天)= 总数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。