Round Up Integer Division

时间:2012-07-11 16:45:56

标签: .net vb.net math division

如果我每页都有一定的行,并且必须找到已经使用了多少页。如果我分开它,我仍然不会得到2页:

   Dim lines As Integer = 68
    Dim lines_per_page As Integer = 65
    Dim pages_used As Integer
    Pages_used =  lines_per_page / lines 

你能帮忙吗。

4 个答案:

答案 0 :(得分:4)

你正在倒退你的部门。您必须按行数除以总行数。查看条款如何以这种方式取消:

x pages =(y行/ 1页)/(z行)<< yeilds 1 / pages(错误!)

x页=(z行)/(y行/ 1页)=(z行)*(1页/ y行)<<正确!

另请注意,您需要执行双重除法,而不是整数除法,然后将结果值四舍五入,因为必须将部分页面舍入为整页。

Dim lines As Integer = 68 
Dim lines_per_page As Double = 65 
Dim pages_used As Integer 
pages_used = CType(Math.Ceiling(lines / lines_per_page), Integer)

答案 1 :(得分:2)

注意:此解决方案使用您提供的参数,类型无变化。 Roken的解决方案在逻辑上是正确的,但是不会编译,因为pages_used被转换为整数。

使用以下内容:

Dim lines As Integer = 68
Dim lines_per_page As Integer = 65
Dim pages_used As Integer

pages_used = (lines + lines_per_page - 1) \ lines_per_page

结果:pages_used = 2

答案 2 :(得分:0)

那是因为你将Pages_Used作为整数。 VB将对结果进行舍入。请尝试使用double。

答案 3 :(得分:0)

这里有什么问题是你正在扭转分裂。你应该将每行的行划分为

Pages_used = lines / lines_per_page

不是相反。