给定距离(50km)为整数:50
时间为字符串,格式如下:00:02:04.05
HH:MM:ss.ms
如何以km / h计算平均速度?
由于
兰斯
答案 0 :(得分:5)
你走了:
double distanceInKilometres = double.Parse("50");
double timeInHours = TimeSpan.Parse("00:02:04.05").TotalHours;
double speedInKilometresPerHour = distanceInKilometres / timeInHours;
由于我不在编译器附近,您的里程可能会有所不同:)
答案 1 :(得分:5)
简短的回答是:
int d = 50;
string time = "00:02:04.05";
double v = d / TimeSpan.Parse(time).TotalHours;
这将以km / h为单位给出速度(v
)。
更面向对象的答案包括定义距离和速度的值对象类。就像TimeSpan是一个值对象一样,您可以封装距离的概念,而不考虑Distance类中的度量。然后,您可以添加方法(或运算符重载),而不是从TimeSpan计算速度。
这样的事情:
Distance d = Distance.FromKilometers(50);
TimeSpan t = TimeSpan.Parse("00:02:04.05");
Speed s = d.CalculateSpeed(t);
如果您只需要在代码中计算一些地方的速度,那么这种方法就会过度。另一方面,如果使用距离和速度是您域中的核心概念,那肯定是正确的方法。
答案 2 :(得分:2)
你在使用整数是什么? TimeSpan.Ticks
属性是一个64位整数,然后您可以将其传递回TimeSpan
构造函数。
答案 3 :(得分:2)
Matt Howells的答案为您提供平均速度,单位为m / s。
这将按照你的要求给你km / h:
double distanceInKm = (double)50;
double timeInHours = TimeSpan.Parse("00:02:04.05").TotalHours;
double speedInKmPerHour = distanceInKm / timeInHours;