好吧,这是事情。从DataTable
我读number_of_project和number_of_hours_per_day(大部分时间每天5至7小时)。对于每个项目我插入percentage_value与动态创建TextBoxes
(总结所有百分比值是100%)。百分比公式必须计算hours_for_project_per_day。在c中使用百分比#
double hours_for_project_per_day = percentage_value * number_of_hours_per_day/100;
在结束我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)
并找到hours_for_project_per_day与最大十进制值(在这种情况下,1,4),并把值2? 希望你知道我在做什么。
将100更改为100.0:double hours_for_project_per_day = percentage_value * number_of_hours_per_day/100; – 2012-02-21 11:58:18
好吧,没有得到这个事实,即分数的总和和它们的舍入值的总和是不同的。这只是数学:)我会建议将他们四舍五入到2,3或任何小数位(不会解决您的问题,但会减少它),或与您的第二个想法,这对我来说似乎可以。 – 2012-02-21 11:58:38
您是否正在使用可以查询的数据库? – Peter 2012-02-21 11:58:53