2011-03-24 10 views

cevap

24

Tek ihtiyacınız olan: bir buçuk da iki çeyrekte

Math.round(myFloat*4)/4f 

yana bu tek denklem senin de yarım yuvarlama ilgilenir. Yarım veya çeyrek yuvarlama için iki farklı denklem yapmanıza gerek yoktur.

Kod örnek:

public class Main { 
    public static void main(String[] args) { 
     float coeff = 4f; 
     System.out.println(Math.round(1.10*coeff)/coeff); 
     System.out.println(Math.round(1.20*coeff)/coeff); 
     System.out.println(Math.round(1.33*coeff)/coeff); 
     System.out.println(Math.round(1.44*coeff)/coeff); 
     System.out.println(Math.round(1.55*coeff)/coeff); 
     System.out.println(Math.round(1.66*coeff)/coeff); 
     System.out.println(Math.round(1.75*coeff)/coeff); 
     System.out.println(Math.round(1.77*coeff)/coeff); 
     System.out.println(Math.round(1.88*coeff)/coeff); 
     System.out.println(Math.round(1.99*coeff)/coeff); 
    } 
} 

Çıktı:

1.0 
1.25 
1.25 
1.5 
1.5 
1.75 
1.75 
1.75 
2.0 
2.0 
+0

nasıl hem çözecek? Hangisini kullanacağını nasıl biliyor? Math.round (3.8 * 4)/4f == 3.75 ' –

+0

@ user unk: Çünkü "bir buçuk iki çeyrek" ve: http://download.oracle.com/javase/1.4.2/docs/api/ java/lang/Math.html # yuvarlak (float)/ –

+3

Ancak 'Math.round (3.8 * 2)/2f == 4.0 'değil, 3.75' değil. –

1

Matematiksel olarak konuşursak, bunun yuvarlak, .25 ederek şamandıra çarpın ve sonra .25 tarafından tekrar bölmek olabilir.

DÜZENLEME: Üzgünüm, çeyrekte ne demek istediğimi yanlış anladım. Ancak, bildiğim kadarıyla, bu, çeşitli ondalık basamaklara ve derecelere yuvarlamanın en basit yoludur.

+0

Sanırım "4 ile çarpın" demek istiyorsun. – DJClayworth

5

(Math.round(num/toNearest))*toNearest;

sorun görmüyorum toNearest