Как округлить до 2,5 в Java? - PullRequest
1 голос
/ 16 марта 2020

Итак, я делаю фитнес-приложение для android, и теперь я прошу пользователя ввести число, например, 72,5

Я бы взял это число, взял бы его проценты и применил бы к этому функции c.

Мне нужно убедиться, что процент от этого числа округляется до 2,5. Это потому, что в британском спортзале у вас есть только следующие таблички: 1,25x2 = 2,5 2,5x2 = 5 5 + 2,5 = 7,5, 10, 15, 20, 25

Я имею в виду, что это будут числа как эти: 40, 42,5, 45, 47,5, 50

Как я могу округлить число N до 2,5? Я понимаю, что math.Round () округляет до ближайшего целого, но как насчет произвольного числа, подобного этому?

1 Ответ

2 голосов
/ 16 марта 2020

Сделайте это следующим образом:

public class Main {
    public static void main(String args[]) {
        // Tests
        System.out.println(roundToNearest2Point5(12));
        System.out.println(roundToNearest2Point5(14));
        System.out.println(roundToNearest2Point5(13));
        System.out.println(roundToNearest2Point5(11));
    }

    static double roundToNearest2Point5(double n) {
        return Math.round(n * 0.4) / 0.4;
    }
}

Вывод:

12.5
15.0
12.5
10.0

Объяснение:

Это будет проще понять с помощью следующего примера:

double n = 20 / 3.0;
System.out.println(n);
System.out.println(Math.round(n));
System.out.println(Math.round(n * 100.0));
System.out.println(Math.round(n * 100.0) / 100.0);

Вывод:

6.666666666666667
7
667
6.67

Как вы можете видеть здесь, округление 20 / 3.0 возвращает 7 ( это минимальное значение после добавления 0.5 к 20 / 3.0. Проверьте это , чтобы понять реализацию). Однако, если вы хотите округлить его до ближайшего 1/100-го места (то есть до 2 десятичных знаков), более простой способ (но не такой точный. Проверьте это для более точного способа) будет округлять n * 100.0 (что сделает его 667), а затем разделить его на 100.0, что даст 6,67 (то есть до 2 десятичных знаков). Обратите внимание, что 1 / (1 / 100.0) = 100.0

Аналогично, чтобы округлить число до ближайшего 2.5 -ого места, вам нужно сделать то же самое с 1 / 2.5 = 0.4, то есть Math.round(n * 0.4) / 0.4.

. округлив число до ближайшего 100-го места, вам нужно будет сделать то же самое с 1 / 100 = 0.01, то есть Math.round(n * 0.1) / 0.1.

. Чтобы округлить число до ближайшего 0.5 -ого места, вы нужно сделать тоже самое с 1 / 0.5 = 2.0 т.е. Math.round(n * 2.0) / 2.0.

Надеюсь, это понятно.

...