簡體   English   中英

如何在 C# 中正確拆分/分割 integer 數字多次?

[英]How can I split/divide an integer number multiple times correctly in 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;

基本上,我每天都從 DateTime 間隔(startDate,endDate)開始循環。 周一到周二 - 將每天的數量拆分為他們計划的持續時間。 假設周一計划60分鍾生產X數量,周二同樣,60分鍾生產數量的rest。

我是編程新手,數學不太好。 我的部門做錯了什么?

無論數字類型(整數、小數、浮點)如何,都會由於舍入或數字表示而產生錯誤。

為了達到您想要的效果,您需要將最后一個比例計算為總和與所有先前比例之和之間的差。

例如,給定這個總數和這個百分比:

總計:100
第一天:30%
第二天:17&
第 3 天:53%

比例將是:
第 1 天:100 * 30% = 30
第 2 天:100 * 17% = 17
第 3 天:總計 - (Day1 + Day2) = 100 - (30 + 17) = 53。

當然,這會為您提供最后一個的近似結果,但這是使該表達式始終為真的唯一方法:

(第 1 天 + 第 2 天 + 第 3 天)= 總計

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM