语法之间的差异

时间:2013-09-26 08:13:24

标签: c# gridview type-conversion

我正在开发自定义寻呼机控件到我的网格视图。

我使用以下语法来获取页面:

dblpagecount = (doble)(totrecords / grdPages.PageSize);
pagecount = (int)Math.Ceiling(dblPagecount);

使用上面的语法,如果记录的数量为41且页面大小为5,那么我将pagecount设为8,应为9。

如果我使用以下语法,

double dblPagecount = (double)((decimal)totrecords /grdPages.PageSize);
pagecount = (int)Math.Ceiling(dblPagecount);

我得到了精确的页数,即9

我得到了理想的结果,但无法理解为什么上面的synatax没有给出理想的结果。

当我在第一种情况下进行调试时,我观察到dblpagecount的结果为8.0,而8.2

任何人都可以澄清一下,上述陈述如何运作?

2 个答案:

答案 0 :(得分:1)

我假设totrecordsgrdPages.PageSize都属于int类型。因此,无论<{1}}类型的,你最终会以整数运算执行除法,它会向0截断。但是,我实际上不会使用你的第二块代码(当然不会同时使用dblpagecount double - 混合这些几乎总是一个坏主意)。相反,我只是使用:

decimal

这将有效地“整理”而不需要任何浮点运算。

答案 1 :(得分:0)

简单回答

int / int = int

如果你想获得一个十进制数字(数学说这里,也就是任何带有小数的数字,从3.0到3.14159),你必须做类似......

double / int = double

int / double = double

所以只需投出一个值,你很好,这就是为什么以下工作......

double dblPagecount = (double)((decimal)totrecords /grdPages.PageSize);

请注意,不需要外部演员,内部演员应该是双重类型!请阅读下面的评论,以获得您在此处所做的一般想法