2009-07-20 28 views
3

整数として距離(50キロ)を考える:50計算平均速度

、次の形式の文字列として時間:02:00:04.05

HH:MM:ss.ms

どのようにして平均速度をkm/hで計算しますか?

おかげ

ランスあなたが整数を使用している何

+0

?もしそうなら、いつから?例えば真夜中、過去のある日。 。 。 –

+0

質問のタイトルを変更する必要があります –

+0

どのような測定単位が必要ですか?ミズ? kmh? (Furlongs per weeknight?;-)) – Hooloovoo

答えて

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

TimeSpan.Ticksプロパティは、TimeSpanコンストラクタに返すことができる64ビット整数です。

+0

ええ、これはOPが望んでいるものです(この整数が何を表すべきかについての質問は明確ではありませんが)。 – Noldorin

+0

私はlbltime.textに距離と整数を与えて、平均速度を計算する必要があります。 –

5

ここに行く:

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

私は、コンパイラの近くにいないよと、あなたの走行距離は:)

+0

これはうまくいきますが、整数を表示する必要がない場合、 'Ticks'プロパティはスケーリングを必要としません。 –

+0

これは有効です。しかし、これを使ってスピードを計算し平均化するにはどうしたらいいですか? distance/time = avg speed –

+0

@Lance、速度計算に関するご質問をお勧めします。 –

2

Matt Howellsの答えは平均速度(m/s)を示します。

あなたが尋ねたように、これはあなたキロ/ Hを与える:整数は、時間の秒数であるべき

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