2016-03-29 18 views
1

1 saniyelik bir çözünürlük olan bir çözünürlük kümesine sahip bir çeşit animasyon zaman çizelgem var.Çözünürlüğü ayarlamak için ondalık float ondalık basamakları

4 çözünürlük olayları her .25 .5 ve saniyenin .75th denir yani (1000/4) 'dir.

benim zaman çizelgesi olaylar yalnızca başlangıç ​​ve çözünürlük arasındaki rakam sona böylece kullanıcı seti çözünürlüğü girdiği yüzen ondalık basamakları yuvarlamak için bir yol gerekir. 4 kişilik bir çözünürlüğe sahip

, 1.20 4,85 4.75 aşağı yuvarlanır olacaktır 1.25'e kadar yuvarlak olur, ve 2.5

kullanarak Bunu yapmanın en kolay yolu nedir

yuvarlak olmaz Söz konusu şamandıra ve karar verilen?

+0

http://stackoverflow.com/questions/1329426/how-do-i-round-to-the-nearest-0-5 veya http://stackoverflow.com/questions/2826262/round-a-decimal -to-en-çeyrek-in-c-keskin – Marc

cevap

1

Bunun gibi, sonra geri ölçek, en yakın tam sayıya senin "çözünürlük", yuvarlak ederek değerlerini ölçek:

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

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

MidpointRounding.AwayFromZero seçenek almak için gerekli olan * 0,5 ("yukarı" yuvarlak yani sıfırdan uzakta).

+0

Başar, ben izin verir en kısa sürede kabul edeceğim :) –

+0

'Math.Round (originalValue * çözünürlük, MidpointRounding.AwayFromZero)' kullanmak isteyebilirsiniz Varsayılan "MidpointRounding.ToEven" dir. –

+1

@AndrewMorton iyi bir nokta - sadece düzenlenmiş – SlimsGhost