使用c#中的百分比

本文关键字:百分比 使用 | 更新日期: 2023-09-27 18:25:29

好的,事情是这样的。从DataTable中,我读取number_of_projectnumber_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 Roundhours_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?希望你知道我想做什么。

使用c#中的百分比

仅四舍五入信息以输出到用户界面。

您应该使用非舍入数字执行所有计算。

编辑为了回应这样一个事实,即你必须根据百分比风格的输入将四舍五入的值存储在数据库中,我认为这是需求中的一个缺陷。在一天结束时,必须以某种方式决定将额外的时间分配到哪里,这最好由用户来完成,而最简单的方法是让他们分配整个小时的数字。

如果这不可能,我倾向于让用户提示他们需要选择要提升的值——有一种观点认为,也许提高2,1的值而不是1,4的值会更好。不过,这是一个商业决策,而非技术决策。