У меня возникли проблемы при отправке проблем с дорожкой. Я пытаюсь иметь мою программу, так что, когда я запускаю процедуру updateValues, она отправляет десятичное значение некоторым двойным переменным, которые у меня есть в другом классе «Маятник».
Преобразование значений дорожки дорожки в double
Моя логика такова:
В trackbars использовать только целые значения так, чтобы увеличить в десятичных знаков определенные значения должны быть разделены на 100, так что они правильны в моделирования.
Например, если я хочу, чтобы значение силы тяжести составляло 0,4, то значение моей дорожки должно составлять 40, поэтому 40/100 = 0,40
Другим примером будет угол, который будет составлять от -3 до 3 с шагом в десятки. Таким образом, мы переходим от -300 до 300/100 = 3.
Так, конечно, код решение для этого:
Pendulum.angle = (tbrAngle.Value/100);
После ввода контрольной точки в я обнаружил, что с моей TrackBar значением в 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.
}
переменные в моем классе 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 в качестве значения угла. Тем не менее, я знал, что вы можете конвертировать в такие целые числа, но не знали, что можете явно изменить на двойной. Вы учитесь каждый день. –
Попробуйте второй. – Anarion
Лучший способ убедиться, что оба значения являются двойными. 100 не удваивается. 100.0 удваивается. В вашей первой строке вы ничего не делаете (просто выбирая результат, который неправильно вычисляется). Во второй строке вы позволяете 100 понимать неявно (может работать, возможно, нет) – varocarbas