2013-10-13 45 views
0

發送我的跟蹤欄問題時出現問題。 我想讓我的程序,以便當我運行過程updateValues它發送一個十進制值的一些雙變量,我在另一個類「鐘擺」。
將跟蹤欄值轉換爲雙精度值

我的邏輯是這樣的:

的trackbars只使用整數值,以便以小數 某些值必須由100被劃分來遞增,從而它們在 模擬正確的。
例如,如果我希望重力爲0.4,我的軌跡欄值必須是40,所以40/100 = 0.40
另一個示例將是角度從-3到3的小數點增加。所以我們去從-300〜300個/ 100 = 3

所以肯定這個代碼的解決方案是:

Pendulum.angle = (tbrAngle.Value/100); 

把一個斷點在我之後發現,與161的我的TrackBar值擺角僅變爲1.0。

那到底究竟是怎麼回事? 這裏是整個方法在上下文(僅供參考)值:

內frmPendulm類:表

private void UpdateValues() 
       { 

       Pendulum.length = tbrLength.Value; //length is ok as it is an integer 
       Pendulum.angle = (tbrAngle.Value/100); //Not working. 
       //acceleration is calculated so isn't sent 
       Pendulum.aVel = tbrAVel.Value; //must convert 
       Pendulum.damping = tbrDamp.Value; //must convert 
       Pendulum.gravity = tbrGrav.Value; //must convert 
       //This method is run on a button click. 
      } 

在我班上擺的變量:

//all public static so they are actually global (can be used between classes and not just global to this class). 
     public static int length = 10;//length of arm /** can't be less than 0 or will break. 
     public static double angle = 0; //pendulums arm angle 
     public static double aAcc = 0.00; //Angle acceleration - calculated 
     public static double aVel = 0.00; //anglular velocity 
     public static double damping = 0.000; //friction 
     public static double gravity = 0.0; //make gravity a constant 

解決方案 爲了轉換爲double,分子和分母都必須是屬於同一類型。在這種情況下,雙重。

回答

0

如何顯式轉換?

Pendulum.angle = ((double)tbrAngle.Value)/100.0; 
+0

不,我怕我仍然得到1.0作爲我的角度值。但是,我知道你可以轉換爲整數,但不知道你可以明確地變成雙精度。你每天都在學習。 –

+0

嘗試第二個。 – Anarion

+1

確保兩種數值都是雙倍的最佳方法。 100不是雙倍100.0是雙倍。在你的第一行中,你沒有做任何事情(只是將結果錯誤地計算出來)。在你的第二行,你讓100能夠隱含了解(可能會奏效,可能不會) – varocarbas