Рубрики
Без рубрики

Десятичное округление Java для двойного округления, с плавающей запятой до “n” десятичных знаков и другой режим округления

Иногда при работе с двойными и плавающими числами нам нужно округлить их до определенных десятичных знаков для вычисления. Например, магазины по конечной цене, чтобы

Автор оригинала: Pankaj Kumar.

Иногда при работе с double и поплавками нам нужно округлить их до определенных десятичных знаков для вычисления. Например, магазины округляют конечную цену до 2 знаков после запятой с режимом округления наполовину вверх.

До Java 5 класс DecimalFormat использовался для округления, но работа с ним не соответствовала числам и не предоставляла много возможностей. Таким образом, Java 5 представила Режим округления | перечисление и BigDecimal класс был расширен, чтобы использовать режим округления для получения практически любого типа округления, которое вы хотите.

Использование BigDecimal в режиме округления похоже на то, что вы работаете с десятичными дробями, и оно очень простое в использовании. Вот пример программы, показывающий ее использование.

package com.journaldev.misc;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class RoundingExample {

    public static void main(String[] args) {
        double l = 100.34567890;
        
        //similar like RegEx but don't have much options
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println(df.format(l));
        
        //2 decimal places rounding with half up rounding mode
        System.out.println(BigDecimal.valueOf(l).setScale(2, RoundingMode.HALF_UP));
        
        //3 decimal places rounding with ceiling rounding mode
        System.out.println(BigDecimal.valueOf(l).setScale(3, RoundingMode.CEILING));
        System.out.println(BigDecimal.valueOf(l).setScale(0, RoundingMode.CEILING));
        
        //integer rounding with floor rounding mode
        System.out.println(BigDecimal.valueOf(l).setScale(0, RoundingMode.FLOOR));
    }

}