Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:分页、数学、天花板_C#_.net_Rounding - Fatal编程技术网

C#:分页、数学、天花板

C#:分页、数学、天花板,c#,.net,rounding,C#,.net,Rounding,我正在创建一些分页,我遇到了一个问题 如果我有一个数字12,我想用它除以5(5是我想要在一页上的结果数),我该如何正确地对它进行取整?这不起作用: int total = 12; int pages = Math.Ceiling(12 / 5); //pages = 2.4... but I need it to be 3 你可以做: int numPages = Math.Ceiling((decimal)12 / (decimal)5); 或 尽管您的代码应该可以运行,Math.Roun

我正在创建一些分页,我遇到了一个问题

如果我有一个数字12,我想用它除以5(5是我想要在一页上的结果数),我该如何正确地对它进行取整?这不起作用:

int total = 12;
int pages = Math.Ceiling(12 / 5);
//pages = 2.4... but I need it to be 3
你可以做:

int numPages = Math.Ceiling((decimal)12 / (decimal)5);


尽管您的代码应该可以运行,
Math.Round
是错误的,但您可以尝试以下方法:

int pages = (total + pageSize - 1)/pageSize;
这应该与
Math.天花
相同,只是您总是在
Math.天花
返回时处理
int
而不是
double

编辑:要使代码正常工作,您可以尝试:

int pages = (int)Math.Ceiling((double)12/(double)5);

但是您应该使用第一个示例。

如何将页面设置为2.4????一个
int
没有小数。页面实际上不是2.4。。。这个等式是2.4。这就是重点……好吧,你的问题可能是你没有把它转换成整数,并且处理整数算术总是以整数返回的事实。请在2秒钟内使用我的答案。@Tomas:将数学。上限(12/5)转换成整数不会有什么不同。它仍然是2而不是3。这就是为什么它说“并且处理整数算术总是以整数返回的事实”。。。也许不明显:)所以,即使12和5不是小数,我也必须将它们转换为小数?如果不是,你将对12进行整数除法,得到2。在那之后,你们将试着做数学题。2号女巫的上限仍然是2。除法在数学上限之前进行。如果你把12.0除以5.0,你会得到2.4个整数,上限会变成3。然而,正如托马斯·扬森所解释的那样,第二种选择更好。C#中的int/int总是返回和int。因此,如果你想要小数,你需要对它们进行强制转换,这样上限/舍入就可以按照你的预期工作。
Math。第二个版本不需要上限
(实际上也不起作用,因为它只有
双精度
十进制
)的重载。@Phil-他的第二个版本可以工作,但是
上限不需要:)。。。我想至少。我看不出你的编辑有什么用。第一行代码是否已经提供了正确的答案(3)?使用
Math.Ceiling
的示例实际上无法编译
Math.天花
decimal
double
具有重载。如果将它与
int
一起使用,则会出现不明确的调用错误。@Phil:你确定吗?是否存在从int到double的隐式转换?但我确实更新了它,使之更像他在做的事情。有从
int
double
int
decimal
的隐式转换。编译器不知道使用这两个
Math.Ceiling
重载中的哪一个。@Phil:+1很高兴知道。。。我很少使用这个函数,编写自己的函数并不难:)。
int pages = (int)Math.Ceiling((double)12/(double)5);