#c# #timespan
#c# #временной интервал
Вопрос:
Я пытаюсь умножить интервал времени на коэффициент, но я не знаю, как это сделать.
я пробовал это:
long ErrorCoef = 25;
TimeSpan TotalTimer = new TimeSpan(10,1,2,0);
TimeSpan TotalTimer2 = TimeSpan.FromTicks(TotalTimer.Ticks TotalTimer.Ticks * (ErrorCoef / 100));
но значение (ErrorCoef/100)
автоматически присваивается Long, поэтому оно возвращает 0.
(Временной интервал.Метод FromTicks() принимает только Long, а не Double)
Комментарии:
1. попробуйте
(ErrorCoef / 100.0)
, чтобы это было реальное число2. Либо преобразуйте результат double в long, либо сначала выполните умножение, а затем деление (но следите за возможным числовым переполнением):
(TotalTimer.Ticks * ErrorCoef) / 100
.3. почему вы вычисляете свой коэффициент в соответствии с тиками? Почему бы не умножить тики на 1.25 (или 1.25f) и привести результат к long ?
Ответ №1:
Timespan имеет метод умножения, поэтому
var factor = 1.25d;
var totalTimer = new TimeSpan(10,1,2,0);
var totalTimer2 = totalTimer.Multiply(factor);
должно сработать.
Комментарии:
1. Специфично для . Требуется NETCore версии 2.0 или выше.
2. Это хороший ответ, когда вы используете .NETCore, но на самом деле я использую .Net Framework (из-за пользовательского интерфейса WPF, который будет использоваться только в среде Windows)