C# 在c中使用百分比#

C# 在c中使用百分比#,c#,math,rounding,C#,Math,Rounding,好的,事情是这样的。从数据表中,我读取了项目的数量和每天的小时数(大部分时间每天5到7小时)。对于每个项目我插入带有动态创建的文本框的百分比值(所有百分比值的总和为100%)。百分比公式必须计算项目每天的小时数 double hours_for_project_per_day = percentage_value * number_of_hours_per_day / 100; 最后,我每天为项目安排一轮时间。在很多情况下,计算是正确的,但我得到了一些不正确的值(因为舍入),如下所示: n

好的,事情是这样的。从
数据表
中,我读取了项目的数量每天的小时数(大部分时间每天5到7小时)。对于每个项目我插入带有动态创建的
文本框的百分比值(所有百分比值的总和为100%)。百分比公式必须计算项目每天的小时数

 double hours_for_project_per_day = percentage_value * number_of_hours_per_day / 100;
最后,我每天为项目安排一轮时间。在很多情况下,计算是正确的,但我得到了一些不正确的值(因为
舍入
),如下所示:

 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)
我的问题是:我可以用其他方法来做吗
如果(每天项目的总小时数!=每天项目的小时数)
并使用最大十进制值(在本例中为1,4)查找每天项目的小时数
希望你知道我想做什么。

只对输出到用户界面的信息进行四舍五入

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

编辑 作为对必须基于百分比样式输入在db中存储舍入值这一事实的回应,我认为这是需求中的缺陷。在一天结束时,不知何故,必须决定在何处分配额外的时间,这最好由用户来完成——最简单的方法是让他们分配整个小时数


如果这是不可能的,我倾向于让用户提示他们需要选择要凹凸的值-有一个论点认为,可能最好将2,1值凹凸起来,而不是1,4值。但这是一个商业决策,而不是技术决策。

将100改为100.0英寸:项目的双倍小时/天=百分比值*每天的小时数/100;好吧,分数和它们的四舍五入值之和是不同的,这是无法回避的事实。这只是数学:)我建议要么把它们四舍五入到2,3,或者任何小数位(不会解决你的问题,但会减少它),要么继续你的第二个想法,这对我来说似乎没问题。你使用的是可以查询的数据库吗?如果我理解你的问题,你应该把两个值相加,四舍五入应该是7,不是6。@Peter是的,SQL Server 2008和e-MEE也是。问题是我必须向数据库中插入舍入的值。你说得对,我使用了2.1,它更符合逻辑。好建议,谢谢。