繁体   English   中英

设置为浮点数时,NumericUpDown值变为0

[英]NumericUpDown Value turns to 0 when it is set as a float

因此,在以下代码中,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,它们都不是。 但是由于某种原因,由于值0在最小/最大范围之外(最小值设置为1),因此numericUpDown控件会引发错误,因此基本上将其读取为0。

我做错了什么?

您只是不正确理解强制转换的工作方式。 由于您将float转换为int的方式,您将获得0。float值可能是0.42,但它将整数转换为0。

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

为了扩展squelos的答案-听起来好像您在调试器中查看值的时刻与引发异常的时刻是两个不同的时刻。 如果您收到一个异常,说该值是零,则可能是因为该值是零。

之所以可能为零的原因是,从float到int的转换总是四舍五入到最接近的整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM