将跟踪栏值转换为双精度值

本文关键字:双精度 转换 跟踪 | 更新日期: 2023-09-27 18:35:13

我在发送跟踪栏问题时遇到问题。我正在尝试使用我的程序,以便当我运行过程 updateValues 时,它会将十进制值发送到我在另一个类"钟摆"中的一些双精度变量。

我的逻辑是这样的:

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

因此,可以

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

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

在放置断点后,我发现我的跟踪栏值为 161 时,摆锤角度仅变为 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

溶液为了转换为双精度,分子和分母必须属于同一类型。在这种情况下是双倍。

将跟踪栏值转换为双精度值

显式转换怎么样?

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