2012-02-21 4 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); 

Проблема здесь, когда я добавить hour1 и hour2total приходит как 64,25, которые на самом деле должны были 64,15

Это только один из теста, если я ставлю hour1 = 40,00 и hour2 = 40.10, а сумма в общей сумме равна 80.166666666666657, которая на самом деле должна была быть 80.10

Может ли кто-нибудь помочь мне понять, что я делаю неправильно, и как правильно добавить ЧАС и получить общее количество часов?

ответ

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 1/4 часа

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; 
Смежные вопросы