0

基本的に、ユーザーが使用できる時間の制限を設定しています。これで、ボタンが押されるたびに、その人が発生した時間がこの合計値から差し引かれます。

ただし、制限はたとえば 156 時間として表され、5 分の日時表現は 00.05 になるため、結果は 155.55 ではなく 155.95 になります。

私はこれを次のように解決します

 string date2 = TotalMonthlyHours.ToString("HH.mm");
                    double date = double.Parse(date2);                  
                    RunningTotal = date + RunningTotal;
                    Total = limit - RunningTotal;   

何か案は?

4

3 に答える 3

4

5 分を 0.05 として表現しようとしていると思います。その方法は、まず整数として分を取得することです。そして、単純に double に変換します。

double floatmins = minutes/100.0;

そして、次のように逆方向に変換します。

int minutes = (int) (floatmins*100.0);

ただし、これ以上先に進まないでください。そのような量で算術を実行することは期待できません。2.20-1.50 の結果は? あなたと私は 30 分であることを知っていますが、コンピューターは 0.70 と表示していますが、これはまったく役に立ちません。

真の分数表現を使用して時間を格納します。したがって、5 分は5/60.0です。または、合計分を整数で格納します。または整数の合計秒数。またはTimeSpan

重要なのは、独自のヘルパー ルーチンを記述して、適切なストレージ形式から人間が判読できる値に変換できることです。ただし、算術演算が可能な表現で生データを格納する必要があります。

于 2013-04-12T13:22:23.297 に答える
0

日付に分として追加するよりも、最初に分に変換します

var min = Convert.ToDouble(Convert.ToDecimal(textbox.Text) * 60);
DateTimePickerEnd.DbSelectedDate = e.NewDate.Value.AddMinutes(min);           
于 2015-10-02T13:25:34.027 に答える
0

私はこのようなことをすることでそれを解決したと思います

                   string[] times = date.ToString().Split('.');

                    if (date != 0.0)
                    {
                        string minutesString = times[1];
                        string hoursString = times[0];
                        double minutes = Convert.ToDouble(minutesString);
                        double hours = Convert.ToDouble(hoursString);

                        // end of splitting
                        TimeSpan Limit = TimeSpan.FromHours(limit);

                        TimeSpan Hours = TimeSpan.FromHours((int)hours);
                        TimeSpan Minutes = TimeSpan.FromMinutes((int)minutes);

                        TimeSpan SubTotal = Hours + Minutes;


                        Time = Limit - SubTotal;
                    }

編集:あなたが私と同じことを思いついたことをうれしく思います.あなたの返事を読んでください David,

于 2013-04-12T14:05:27.760 に答える