如果我每页给出了一定的行数,并且必须找出已经使用了多少页。如果我把它分开,我仍然没有得到 2 页:
Dim lines As Integer = 68
Dim lines_per_page As Integer = 65
Dim pages_used As Integer
Pages_used = lines_per_page / lines
你能帮忙吗?
你正在倒着做你的划分。您必须将总行数除以每页行数。查看条款如何以这种方式取消:
x pages = (y lines/1 page) / (z lines) << yields 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)
注意:此解决方案使用您提供的参数,类型不变。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
那是因为您将 Pages_Used 作为整数。VB 将对结果进行四舍五入。尝试使用双精度。
这里的问题是你正在扭转分裂。你应该这样划分每页的行数
Pages_used = 行数 / lines_per_page
不是相反。