给定一个距离(50公里)的整数:50
以以下格式的字符串形式给出时间:00:02:04.05
hh:mm:ss.ms
如何计算平均速度(km/h)?
谢谢
Lance
给定一个距离(50公里)的整数:50
以以下格式的字符串形式给出时间:00:02:04.05
hh:mm:ss.ms
如何计算平均速度(km/h)?
谢谢
Lance
这里是你要的内容:
double distanceInKilometres = double.Parse("50");
double timeInHours = TimeSpan.Parse("00:02:04.05").TotalHours;
double speedInKilometresPerHour = distanceInKilometres / timeInHours;
由于我不在编译器附近,所以您的结果可能会有所不同 :)
Ticks
属性就不需要进行任何缩放。 - Sam Harwellint d = 50;
string time = "00:02:04.05";
double v = d / TimeSpan.Parse(time).TotalHours;
这将为您提供以千米/小时为单位的速度(v
)。
更为面向对象的答案包括为距离和速度定义“值对象”类。就像TimeSpan是一个值对象一样,您可以在Distance类中封装距离的概念,而不考虑测量单位。然后,您可以添加计算时间间隔内速度的方法(或运算符重载)。
大致如下:
Distance d = Distance.FromKilometers(50);
TimeSpan t = TimeSpan.Parse("00:02:04.05");
Speed s = d.CalculateSpeed(t);
如果你在代码中只需要计算几个地方的速度,那么这种方法就过于复杂了。另一方面,如果距离和速度是你领域的核心概念,那么这绝对是正确的方法。
马特·豪尔斯的回答给出了平均速度(米/秒)。
以下是您要求的公里/小时转换:
double distanceInKm = (double)50;
double timeInHours = TimeSpan.Parse("00:02:04.05").TotalHours;
double speedInKmPerHour = distanceInKm / timeInHours;
TimeSpan.Ticks
属性是一个64位整数,你可以将其传回TimeSpan
构造函数。