2014-04-05 3 views
0

주어진 요금 (지불)에서 시간을 어떻게 생성 할 수 있습니까? 사용자는 총 기간을 얻기 위해 지불 및 요금을 입력해야합니다. 이 임무는 어떻게 달성 될 수 있습니까?주어진 지불 요금 (VB.net)에서 시간 계산 (시간과 분)

예 :

rate = $2.00 per hours 
payment = $5.00 

결과 :

duration = 02 h 30 minutes 

감사합니다. (. 즉, 2.5) 당신은 시간의 시간 소수점 표현을 일단

+0

당신은 지불을 요금으로 나눠서 시간 수를 제공합니다. (예 : 5/2 = 2.5) –

+0

안녕하십니까. 나는 그렇게하려고 노력했다. 하지만 몇 분이면 붙어 있습니다. 어쩌면 자정에 머리가 약간 금이 간다. –

+0

나는 상황을 이해할 수 없었다. 정확히 무엇을하려는 거니? –

답변

2

사용 TimeSpan이 코드를 단순화하기 위해

Private Function GetDuration(hourlyRate as decimal, payment as decimal) As TimeSpan 
    return TimeSpan.FromHours(payment/hourlyRate) 
End Function 

' ... 

Dim duration = GetDuration(2, 5) 
Console.WriteLine("{0} hours {1} minutes", duration.Hours, duration.Minutes) 

바이올린 : http://dotnetfiddle.net/2tvYMK

+0

+1에 대한 예제를 참조하십시오. 내 임무를 완수하기 위해 기능을 사용하는 것에 대한 조언을 들으십시오. 또 다른 한개는 바이올린을 제공하기 위해 위로 향한다. ** 메가 감사 ** –

1
hours = payment \ rate; 
minutes = (payment/rate - hours) * 60; 
1

, 당신이해야 할 모든은 다음과 같습니다

  1. 는 정수 부분을 - 즉, 전체 시간 수이다;
  2. 은 전체에서 정수 부분을 뺀 다음 60을 곱합니다. 그 다음 행과 함께

뭔가 일을해야 시간 (분)입니다 ...

Dim hours as Integer 
Dim minutes as Integer 

Dim time as Double 

time = payment/rate 

hours = CInt(time) 
minutes = CInt((time - hours) * 60) 

Console.WriteLine("duration = {0} h {1} minutes", hours, minutes) 
1

TimeSpan 구조체를 사용하십시오. 그것은 당신을위한 시간과 분 계산을 할 것입니다.

Dim rate As Double = 2.0 
Dim payment As Double = 5.0 
Dim time = TimeSpan.FromHours(payment/rate) 
Dim duration = [String].Format("{0:00} h {1:00} minutes", time.Hours, time.Minutes) 
' ==> "02 h 30 minutes" 

돈으로 작업 할 때 Decimal 유형을 사용할 수도 있습니다. 바이너리 형식에서 또는 형식으로 변환 할 때 추가 라운딩 오류가 발생하지 않는 이점이 있습니다. 그러나 TimeSpan.FromHours은 시간을 Double으로 예상합니다. 따라서 Double이이 작은 예에 적합합니다.