2009-07-20 8 views
3

정수로 거리 (50km)을 감안할 때 : 50계산 평균 속도

그리고 다음과 같은 형식의 문자열로 시간 : 00 04.05

HH를 : mm : ss.ms

평균 속도를 km/h로 계산하는 방법은 무엇입니까?

감사

랜스 당신이 정수를 사용하는 어떤

+0

? 그렇다면 초 단위 시간은? 예 : 자정, 과거의 어떤 날짜. . . –

+0

질문 제목을 변경해야합니다 –

+0

어떤 측정 단위가 필요합니까? m/s? kmh? (2 주에 Furlongs? ;-)) – 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

이 작동합니다. 하지만 어떻게 이것을 사용하여 평균 속도를 계산할 수 있습니까? 거리/시간 = 평균 속도 –

+0

@ Lance, 속도 계산과 관련하여 궁금한 점을 수정하는 것이 좋습니다. –

2

Matt Howells 대답은 평균 속도 (m/s)를 제공합니다.

당신이 요청으로이 당신의 km/h을 줄 것이다 : 정수는 시간 (초)이어야한다

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