2010-06-22 72 views
1

我想要将控件的大小与表单的大小分开,并希望获取其底板值。 我想着当我尝试用整数除整数并将其结果再次存储在integer中时会返回什么。将整数除以整数并返回整数值时会返回什么

我只想要楼面价值。我尝试使用Math.Floor,Math.Truncate,但它显示我在跟随methods is ambigious之间调用的错误,因为编译器无法理解潜水后将返回什么类型的值,即小数或双精度。

如果我不使用任何这样的功能,它会返回我的楼面价值。 我只想要楼面价值。

 Nullable<int> PanelCountInSingleRow = null; 
     Nullable<int> widthRemainder = null; 

     //setting the size of the panel 
     CurrentControlSize = PanelView.Size; 
     //Calculate no of Panels that can come in a single row. 
     PanelCountInSingleRow = Math.Floor(this.Size.Width/CurrentControlSize.Width); 
+0

如何显示对于初学者你的代码? – Gary 2010-06-22 06:09:04

+0

@Gary:当然我正在编写我的代码 – 2010-06-22 06:10:21

+0

由于控件通常比窗体小,因此按窗体大小对控件大小进行整数除法将始终为0.但是,它将是一个表示底面值的整数的结果。 – 2010-06-22 06:12:58

回答

4

整数除法四舍五入朝0不太一样的发言(由于负数四舍五入“涨”向0),但我假设你的尺寸都是非负的反正。根据C#4规范,第7.8.2节:

该部门将结果向 调零。因此, 结果的绝对值是最大可能的整数 ,其小于或等于两个操作数的商的绝对值 。结果为零或 正数,当两个操作数有 相同符号和零或负数 时,两个操作数有相反的 符号。

(注意,这是专门为整数除法。显然浮点除法并没有这样做!)

所以基本上你应该能够去除Math.Floor电话。

如果你想要得到的余数,以及,你可以使用Math.DivRem

int remainder; 
int count = Math.DivRem(Size.Width, CurrentControlSize.Width, out remainder); 
+0

感谢您提供的信息,我对您编辑的其余部分有更多的问题。它会返回一些固定的十进制值或其他东西吗?例如。在这种情况下10/3?在5/2中剩余的数字是333333? 5作为50或者什么 – 2010-06-22 06:16:43

+0

@Shantanu:不,它会返回余数* - 因此对于10/3,余数将是1,因为这是10除以3后剩下的部分。同上5/2是2余数1。 8/2将是4剩余0,11/3将3剩余2等。有关更多详细信息,请参阅文档。 – 2010-06-22 06:22:15

+0

oops sry,没想到我在问什么。你是对的。 – 2010-06-22 06:25:56