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,它更符合逻辑。好建议,谢谢。