Для преобразования от секунд до минут вам просто нужно разделить на 60.0 (вам нужно десятичное число или оно будет рассматриваться как целое число). Если обработать как целое число и вы пройдете 30 секунд, то 30/60 будет равно 0.
Также используйте метод double.TryParse
. Прямо сейчас, если кто-то входит в 1.50xx, ваше приложение выйдет из строя. Используйте либо метод double.TryParse
, либо используйте механизм catch try или разрешите только числовую запись.
EDIT
Это будет выполнять то, что вы хотите. Я добавил ярлык для вывода вывода, но вы можете его удалить.
double enteredNumber;
if (double.TryParse(minTosecTextBox.Text, out enteredNumber))
{
// This line will get everything but the decimal so if entered 1.45, it will get 1
double minutes = Math.Floor(enteredNumber);
// This line will get the seconds portion from the entered number.
// If the number is 1.45, it will get .45 then multiply it by 100 to get 45 secs
var seconds = 100 * (enteredNumber - Math.Floor(enteredNumber));
// now we multiply minutes by 60 and add the seconds
var secondsTotal = (minutes * 60 + seconds);
this.labelSeconds.Text = secondsTotal.ToString();
}
else
{
MessageBox.Show("Please enter Minutes");
}
EDIT 2
Некоторые дальнейшие разъяснения
Вы не преобразования минут до нескольких секунд, так как если бы вы были тогда 1.5 (1 минуту и половина) будет равна 90 секунд. Это логично и очевидно. Вы обрабатываете только часть перед десятичной точкой в виде минут, а часть после десятичной даты должна обрабатываться как секунды (1.30 = 1 минута и 30 секунд = 90 секунд). Поэтому нам нужно только преобразовать часть до десятичной дроби в секундах и добавить к ней часть после десятичной дроби.
Это правильно, что 1,5 минуты, т.е. одна минута, и полтора, соответствуют 90 секунд ... –
одна минута 60 секунд. поэтому '1.5 * 60 = 90' –