2010-11-18 27 views
2

制限された範囲からステップサイズを返す関数があります。したがって、範囲が{1,2,3,4,5,6..10}で5段階が必要な場合は、ステップサイズは2になります。これは複雑ではありません。C#DateTime:倍精度浮動小数点型時間の倍精度化

私は{.1、.2、.3、。。。。。。。。.4}を持ち、7ステップを望むならば、ステップサイズは0.14285です。次に、0.14285を最も近い関連する時間測定値に変換したい。この場合、14285は分数日を表します。たとえば、整数1は一日を表し、0.25は6時間を表します。

.14285 = 12,342.24 seconds = 205.704 Minutes = 3.42 Hours ~= 4 hours. 

私はその後に0.14285をスナップする(4 * 60 * 60 = 14,400 /(24 * 60 * 60))= 4時間の10進数である0.16666。

私は多かれ少なかれ計算したことがありますが、私はDateTimeのものを使ってこれを行う簡単な方法があるのでしょうか?

+2

質問:なぜ0.14285は4時間に等しいですか?私はそれを取得しません。 – BeemerGuy

+0

整数1が1日に等しい場合、0.25は6時間に等しい。 .14285は3.42時間に等しい。私は4時間に切り上げました。 – John

答えて

4

ご質問をより明確にすることをお勧めします。あなたが指していた0.14285日の一部を表していたことを理解するまでにはしばらく時間がかかりました。

あなたはこのようなものを使用することができます。

// {03:25:42.24} 
TimeSpan unSnapped = TimeSpan.FromDays(0.14285); 

// {04:00:00} : Round up the hours and construct a TimeSpan from it 
TimeSpan snapped = TimeSpan.FromHours(Math.Ceiling(unSnapped.TotalHours)); 

// 0.166666666 
double snappedFractionOfADay = snapped.TotalDays; 

あなたは時間のスパンでTotalXXX性質を調べることができ、他の情報を取得するために必要な場合は、言及します。

+0

これはすごくうまくいった。私はこのようなもののために飛び跳ねていて、あなたは納品しました。ありがとう! – John

関連する問題