Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中正确地将整数拆分/除多次?_C#_Math_Division_Integer Division - Fatal编程技术网

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

如何在C#中正确地将整数拆分/除多次?,c#,math,division,integer-division,C#,Math,Division,Integer Division,假设我有21875作为totalQuantityNumber 我需要在for循环中多天拆分totalQuantityNumber,例如第一天20000和第二天1875。 在结束时的for循环中,我对分割的数量求和,以便稍后验证分割是否正确,例如totalSplittedQuantity+=splittedQuantity 在拆分结束时,我验证拆分产品编号的总和是否与初始计划的总产品编号相同,例如totalQuantityNumber==totalSplittedQuantity,它应该是2187

假设我有
21875
作为
totalQuantityNumber

我需要在for循环中多天拆分
totalQuantityNumber
,例如第一天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)循环每一天,比如周一到周二,将每天的数量按计划时间进行分割,比如周一计划60分钟生成X数量,周二同样是60分钟生成剩余数量


我是编程新手,数学不太好。除法有什么问题?

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

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

例如,考虑到这个总数和这个百分比:

总数:100
第一天:30%
第2天:17&
第3天:53%

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

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


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

谢谢!这帮助我解决了我的问题,现在它工作了!(不客气)