0

C# での私のアプリケーションは給与管理システム上にあります...そして、各従業員の勤務時間を可変にしたいと思います...このために double を使用しています...従業員が 8 時間 20 分働いているとします..エントリはテキスト ボックスの 8.20 のようになります...そのため、' を使用して 1 つの変数で小数点の前の部分を区切ります

var values = totaldays.ToString(CultureInfo.InvariantCulture).Split('.');
int firstno = int.Parse(values[0]);
int secondno = int.Parse(values[1]);`

したがって、最初の変数を正確に取得しますが、小数点以下の部分にゼロが含まれている場合、「secondno」変数に格納されません。ゼロは自動的に削除され、8.20 と 8.2 の結果は同じ、つまり 8.2 になります。

しかし、時間が異なるため、1つは8時間20分、もう1つは8時間2分です..これを行うための解決策が必要です..アプリケーション全体がこれに依存しているため、助けてください。

4

3 に答える 3

7

ユーザーが時間と分を入力している場合、? を使用しないのはなぜTimeSpanですか?

var input = "8.20";
var time = TimeSpan.ParseExact(input, @"h\.mm", null);
var hours = time.Hours;      // 8
var minutes = time.Minutes;  // 20

参考文献


最初に10進数として保存する必要がある場合でも、これを使用して管理できます。

var input = 8.20m;
var parts = input.ToString("0.00", CultureInfo.InvariantCulture).Split('.');
var hours = int.Parse(parts[0]);     // 8
var minutes =  int.Parse(parts[1]);  // 20

しかし、Ellesedil が 指摘しているように、 のような値を処理する方法を決定する必要があります8.70

于 2013-07-11T16:11:29.487 に答える
1

このようなことを試してください。これは私の頭の上から外れています:

int hours = Math.Floor(totaldays);
int minutes = (totaldays - Math.Floor(totaldays)) * 100;
于 2013-07-11T16:10:41.033 に答える
1

f2 フォーマット指定子を使用して double をフォーマットできます

double d = 8.20;
string str = d.ToString("f2", System.Globalization.CultureInfo.InvariantCulture)
int hour = int.Parse(str.Split('.')[0]);
int min = int.Parse(str.Split('.')[1]);

それで終わりです

于 2013-07-11T16:20:44.483 に答える