Как округлить поплавок до ближайшего квартала - PullRequest
8 голосов
/ 24 марта 2011

Иногда мне нужно округлить число до ближайшей четверти, а иногда до ближайшей половины.

Для половины я использую

Math.round(myFloat*2)/2f 

Я могу использовать

Math.round(myFloat*4)/4f.

но есть ли другие предложения?

Ответы [ 3 ]

26 голосов
/ 24 марта 2011

Все, что вам нужно, это:

Math.round(myFloat*4)/4f

Поскольку половина также составляет две четверти, это одно уравнение позаботится и о вашей полукруглой форме Вам не нужно делать два разных уравнения для округления до половины или четверти.

Пример кода:

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);
    }
}

Выход:

1.0
1.25
1.25
1.5
1.5
1.75
1.75
1.75
2.0
2.0
5 голосов
/ 29 августа 2013

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

Будет округлять число до toNearest

1 голос
/ 24 марта 2011

Говоря математически, вы можете умножить свое число на 0,25, округлить его, а затем снова разделить на 0,25.

РЕДАКТИРОВАТЬ: Извините, кажется, я неправильно понял, что вы имели в виду четвертьОднако, насколько я знаю, это самый простой способ округления до различных десятичных разрядов и градусов.

...