将轨迹栏值转换为double

时间:2013-10-13 12:58:39

标签: c# floating-point integer double trackbar

发送轨道栏问题时遇到问题。 我试图让我的程序,所以当我运行程序updateValues时,它发送一个十进制值给我在另一个类“Pendulum”中的一些双变量。

我的逻辑是这样的:

  

轨迹栏仅使用整数值,因此以小数形式递增   某些值必须除以100,因此它们是正确的   模拟。                
例如,如果我想要重力为0.4,我的轨道条值必须为40,因此40/100 = 0.40                
另一个例子是角度从-3到3递增小数。所以我们从-300到300/100 = 3。

对此,代码解决方案肯定是:

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

在我发现断点后,发现我的轨迹栏值为161时,摆角只有1.0。

那到底是怎么回事? 以下是上下文中的值的整个方法(仅供参考):

frmPendulm Class:Form

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.
            }

我班Pendulum中的变量:

//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

解决方案 为了转换为双精度,分子和分母必须是相同的类型。在这种情况下是双倍。

1 个答案:

答案 0 :(得分:0)

显式转换怎么样?

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