使用c#中的百分比
本文关键字:百分比 使用 | 更新日期: 2023-09-27 18:25:29
好的,事情是这样的。从DataTable
中,我读取number_of_project和number_of_hours_per_day(大部分时间每天5到7小时)。对于每个项目,我插入带有动态创建的TextBoxes
的百分比值(所有百分比值的总和为100%)。百分比公式必须计算hours_for_project_per_day。
double hours_for_project_per_day = percentage_value * number_of_hours_per_day / 100;
最后i Round
hours_for_project_per_day。很多时候计算是正确的,但在这种情况下,我得到了一些不正确的值(因为Rounding
):
number_of_project = 5;
number_of_hours_per_day = 7;
percentage_value | project | (Math.Round)hours_for_project_per_day (double values)
-----------------|---------|------------------------------------------------------
30 | P1 | 2 (2,1)
17 | P2 | 1 (1,19)
18 | P3 | 1 (1,26)
20 | P4 | 1 (1,4)
15 | P5 | 1 (1,05)
-------------------------------------------
sum 100 | 5 | 6 (instead 7)
我的问题是:我可以用其他方式来做吗或只是检查if(sum_hours_for_project_per_day != number_of_hours_per_day)
,并找到具有最大十进制值(在本例中为1,4)的hours_for_project_per_day,并将值设为2?希望你知道我想做什么。
仅四舍五入信息以输出到用户界面。
您应该使用非舍入数字执行所有计算。
编辑为了回应这样一个事实,即你必须根据百分比风格的输入将四舍五入的值存储在数据库中,我认为这是需求中的一个缺陷。在一天结束时,必须以某种方式决定将额外的时间分配到哪里,这最好由用户来完成,而最简单的方法是让他们分配整个小时的数字。
如果这不可能,我倾向于让用户提示他们需要选择要提升的值——有一种观点认为,也许提高2,1的值而不是1,4的值会更好。不过,这是一个商业决策,而非技术决策。