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,分子和分母都必須是屬於同一類型。在這種情況下,雙重。
不,我怕我仍然得到1.0作爲我的角度值。但是,我知道你可以轉換爲整數,但不知道你可以明確地變成雙精度。你每天都在學習。 –
嘗試第二個。 – Anarion
確保兩種數值都是雙倍的最佳方法。 100不是雙倍100.0是雙倍。在你的第一行中,你沒有做任何事情(只是將結果錯誤地計算出來)。在你的第二行,你讓100能夠隱含了解(可能會奏效,可能不會) – varocarbas