簡體   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