Как умножить интервал времени на процент

#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)