2016-03-29 7 views
1

私は1秒のファクタである解像度セットを持つソートのアニメーションタイムラインを持っています。解像度を設定する浮動小数点数を丸める

4の分解能は(1000/4)です。つまり、イベントはと呼び、0.55秒と0.75秒の間隔です。

ユーザが設定した解像度に入力する浮動小数点数を丸めて、タイムラインイベントを開始できるのと解像度の数値で終了する方法が必要です。 4の解像度で

、1.20は4.85が が4.75未満を切り捨てとなり、1.25に切り上げなり、そして2.5は

使用してこれを実行する最も簡単な方法は何ですか

を四捨五入されません与えられた浮動小数点数と解像度は?

+0

http://stackoverflow.com/questions/1329426/how-do-i-round-to-the-nearest-0-5またはhttp://stackoverflow.com/questions/2826262/round-a-decimal最も近い四分円の鋭い – Marc

答えて

1

はちょうどこのようにして、再びそれをスケーリング、最も近い整数にあなたの「解像度」、ラウンドして値をスケーリング:

double originalValue = 1.2; 
double resolution = 4; 
double roundedValue; 

roundedValue = Math.Round(originalValue * resolution, MidpointRounding.AwayFromZero)/resolution; // 1.25 

MidpointRounding.AwayFromZeroオプションを取得するために必要とされている* 0.5(「アップ」四捨五入すなわちゼロから離れる)。

+0

素晴らしい、私はそれができるようにすぐに受け入れる:) –

+0

'Math.Round(originalValue * resolution、MidpointRounding.AwayFromZero)'をデフォルトは 'MidpointRounding.ToEven'です。 –

+1

@AndrewMorton良い点 - ただ編集しました – SlimsGhost

関連する問題