0

因此 resizeWidth 和 resizeHeight 是以下代码中的 numericUpDown 控件。此外, tempBitmapW 和 tempBitmapH 都是浮点数。

float rW = (float)resizeWidth.Value;
float rH = (float)resizeHeight.Value;
rH = (float)Math.Truncate(tempBitmapH * ((float)rW / tempBitmapW));
int rsW = (int)rW;
int rsH = (int)rH;
resizeWidth.Value = rsW;
resizeHeight.Value = rsH;

现在,当我调试它时,rsW 和 rsH 以及 rW 和 rH 不读为 0,它们都没有。但由于某种原因,numericUpDown 控件会抛出错误,因为值 0 超出了最小值/最大值范围(最小值设置为 1),所以基本上它会将其读取为 0。

我做错了什么?

4

2 回答 2

1

您只是没有正确理解演员表的工作原理。由于您将浮点数转换为 int 的方式,您将得到 0。浮点值可能是 0.42,但它会以整数形式转换为 0。

您应该详细检查演员表的工作方式,这可能会解决您的问题。

于 2012-05-17T21:51:13.887 回答
0

为了扩展 squelos 的答案-听起来可能是您查看调试器中的值的那一刻和抛出异常的那一刻是两个不同的时间。如果您收到异常说该值为零 - 这可能是因为该值为零。

它可能变为零的原因是因为从 float 到 int 的转换总是向下舍入到最接近的整数。

于 2012-05-17T21:56:21.497 回答