2012-02-21 15 views
0

次のコードを実行して時間を追加し、合計時間を計算しました。合計時間数asp.netを計算するC#

string hour1="48.40"; 
    string hour2 = "45.35"; 

    TimeSpan ts = new TimeSpan(int.Parse(hour1.Split('.')[0]),int.Parse(hour1.Split('.')[1]), 
         0); 
    TimeSpan ts1 = new TimeSpan(int.Parse(hour2.Split('.')[0]),int.Parse(hour2.Split('.')[1]), 
       0); 

    Double total = (ts.TotalHours) + (ts1.TotalHours); 

ここでの問題は、私はhour1hour2を追加するときtotalが実際に64.15

私はhour1を置く場合、これは=、ただ一つの試験例であったはず64.25として来ています40.00およびhour2 = 40.10の合計値は、80.166666666666657となります。実際には、80.10

私は間違って何をしているのか理解してくれる人がいますし、HOURを追加して合計時間数を取得する正しい方法は何ですか?

答えて

2

あなたは、文字列に入れてタイムスタンプを持っているとき、それは少し奇妙になっています。あなたはこのようにそれを行う必要がある場合でも、このコードは

string hour1="48.40"; 
string hour2 = "45.35"; 

//find total number of minutes for each hour above 
int minutes1 = int.Parse(hour1.Split('.')[0])*60+int.Parse(hour1.Split('.')[1]); 
int minutes2 = int.Parse(hour2.Split('.')[0])*60+int.Parse(hour2.Split('.')[1]); 

//calculate back to hours and minutes and reassemble as a string 
string result = (minutes1+minutes2)/60+"."+(minutes1+minutes2)%60; 

を動作するはずですそして、私はあなたが上記のあなたの例では94.15なく64.15を期待している願っています。

3

実際には、分と分数の部分を混合するだけで正しい結果が得られます。

80時間10分は、80 1/6時間

64時間15分で64時間15分

0

あなたがしたい結果を得るために次のコードを使用することがあります。

string hour1 = "48.40"; 
string hour2 = "45.35"; 

TimeSpan ts = new TimeSpan(int.Parse(hour1.Split('.')[0]), int.Parse(hour1.Split('.')[1]), 
           0); 
TimeSpan ts1 = new TimeSpan(int.Parse(hour2.Split('.')[0]), int.Parse(hour2.Split('.')[1]), 
         0); 

TimeSpan total = ts + ts1; 

int hours = (int)total.TotalHours; 

int minutes = total.Minutes;