Languages

Java - jak zaokrąglić do dwóch miejsc po przecinku

3 points
Asked by:
Nikki
9650

Hej :D

Jak zaokrąglić wynik, żeby po przecinku zawsze były dwa miejsca np. 56.99? Próbowałam z Math.round(), ale niestety nie działa :( 

1 answer
3 points
Answered by:
Nikki
9650

Zaaokroąglanie liczb zmiennoprzecinkowych nie jest super proste i trzeba troche czasu na to poświęcić, aby to zrozumieć. Najlepiej przerobić sobie dużo przykładów i napisać kilka utili.

Ogólnie zagadnienie zmiennoprzecinkowych jest dość obszernym tematem w programowaniu i informatyce. Dla początkujących proponuje nie zagłębiać się zbytnio w szczegóły, gdyż może troszkę zniechęcić ilość informacji dostępnych na ten temat.

Przykład 1 z Math.round, mnożenie i dzielenie

Tutaj mamy metodę do zaokrąglania i kilka przykładów jej użycia. Proponuje sobie przekopiować ten przykładzik i zmodyfikować go, aby lepiej zrozumieć działanie.

public class RoundExample1 {

    public static void main(String[] args) {

        System.out.println(roundTo2DecimalPlace(56.990));  // 56.99
        System.out.println(roundTo2DecimalPlace(56.994));  // 56.99
        System.out.println(roundTo2DecimalPlace(56.995));  // 57.0
        System.out.println(roundTo2DecimalPlace(56.996));  // 57.0
        System.out.println(roundTo2DecimalPlace(56.999));  // 57.0
    }

    public static double roundTo2DecimalPlace(double value) {
        return Math.round(value * 100.0) / 100.0;
    }
}

Przykład 2 z BigDecimal

Precyzje mamy ustawioną do drugiego miejsca po przeciunku dlatego dla trzeciego przykładu 56.995 dostajemy: 56.99, zamiast 57.0

import java.math.BigDecimal;
import java.math.RoundingMode;

public class RoundExample2 {

    public static void main(String[] args) {

        System.out.println(round(56.990)); // 56.99
        System.out.println(round(56.991)); // 56.99
        System.out.println(round(56.995)); // 56.99
        System.out.println(round(56.996)); // 57.0
        System.out.println(round(56.999)); // 57.0
    }

    public static double round(double value) {
        int precision = 2;
        BigDecimal bigDecimal = new BigDecimal(value);
        bigDecimal = bigDecimal.setScale(precision, RoundingMode.HALF_UP);
        return bigDecimal.doubleValue();
    }
}

 

0 comments Add comment
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join