计算平均速度

3

给定一个距离(50公里)的整数:50

以以下格式的字符串形式给出时间:00:02:04.05

hh:mm:ss.ms

如何计算平均速度(km/h)?

谢谢

Lance


整数应该是时间中的秒数吗?如果是,从什么时候开始计算秒数呢?例如:午夜、过去某个日期... - Binary Worrier
你应该修改问题的标题。 - Davide Vosti
你需要什么单位的度量? 米/秒? 公里/小时?(拍每两周浪的程度?;-)) - Hooloovoo
1
供日后参考:v = s / t,其中v代表速度(即速率),s代表路径长度,t代表时间。 - Tamas Czinege
4个回答

5

这里是你要的内容:

double distanceInKilometres = double.Parse("50");
double timeInHours = TimeSpan.Parse("00:02:04.05").TotalHours;
double speedInKilometresPerHour = distanceInKilometres / timeInHours;

由于我不在编译器附近,所以您的结果可能会有所不同 :)


(注:本文为IT技术相关内容)

这个可以运行,但是如果他不需要显示整数,Ticks属性就不需要进行任何缩放。 - Sam Harwell
是的,这个方法是有效的。但是我该如何使用它来计算平均速度呢?距离/时间=平均速度 - Lance
@Lance,我建议你修改关于速度计算的问题。 - Matt Howells

5
简短回答如下:
int 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);

如果你在代码中只需要计算几个地方的速度,那么这种方法就过于复杂了。另一方面,如果距离和速度是你领域的核心概念,那么这绝对是正确的方法。


2

马特·豪尔斯的回答给出了平均速度(米/秒)。

以下是您要求的公里/小时转换:

double distanceInKm = (double)50;
double timeInHours = TimeSpan.Parse("00:02:04.05").TotalHours;
double speedInKmPerHour = distanceInKm / timeInHours;

2
你使用整数的目的是什么?TimeSpan.Ticks属性是一个64位整数,你可以将其传回TimeSpan构造函数。

是的,这很可能是OP想要的(尽管问题并不清楚这个整数应该代表什么)。 - Noldorin
我有一个整数距离和lbltime.text中的时间,然后需要计算平均速度。 - Lance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接