Languages

Java - jak zaokr─ůgli─ç do dwóch miejsc po przecinku

3 points
Asked by:
Nikki
10100

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
10100

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