Here you can find the source of round(BigDecimal decimal, int precision)
Parameter | Description |
---|---|
decimal | A decimal to be rounded. |
precision | The number of decimal places to round to. |
public static BigDecimal round(BigDecimal decimal, int precision)
//package com.java2s; /*// w w w . jav a 2s.co m * The MIT License (MIT) * * Copyright (c) 2015 Lachlan Dowding * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import java.math.BigDecimal; import java.math.RoundingMode; public class Main { /** * The default rounding mode used by the methods in this class. */ public static RoundingMode DEFAULT_ROUNDING_MODE = RoundingMode.HALF_UP; /** * Rounds the given decimal to the given precision using the default rounding algorithm. * * @param decimal A decimal to be rounded. * @param precision The number of decimal places to round to. * @return The given decimal rounded to the given precision using the default algorithm. */ public static BigDecimal round(BigDecimal decimal, int precision) { return round(decimal, precision, null); } /** * Rounds the given decimal to the given precision with the given rounding algorithm. * * @param decimal A decimal to be rounded. * @param precision The number of decimal places to round to. * @param roundingMode The rounding algorithm to be used. * @return The given decimal rounded to the given precision using the given algorithm. */ public static BigDecimal round(BigDecimal decimal, int precision, RoundingMode roundingMode) { if (decimal == null) return null; if (roundingMode == null) roundingMode = DEFAULT_ROUNDING_MODE; return decimal.setScale(precision, roundingMode); } /** * Rounds the given decimal to the given precision using the default rounding algorithm. * * @param decimal A decimal to be rounded. * @param precision The number of decimal places to round to. * @return The given decimal rounded to the given precision using the default algorithm. */ public static BigDecimal round(BigDecimal decimal, String precision) { return round(decimal, precision, null); } /** * Rounds the given decimal to the given precision with the given rounding algorithm. * * @param decimal A decimal to be rounded. * @param precision The number of decimal places to round to. * @param roundingMode The rounding algorithm to be used. * @return The given decimal rounded to the given precision using the given algorithm. */ public static BigDecimal round(BigDecimal decimal, String precision, String roundingMode) { if (precision == null) return decimal; return round(decimal, Integer.parseInt(precision), normalizeRoundingMode(roundingMode)); } /** * Rounds the given list of decimals to the given precision using the default rounding algorithm. * * @param decimals A decimal to be rounded. * @param precision The number of decimal places to round to. * @return The given list of decimals rounded to the given precision using the default algorithm. */ public static BigDecimal[] round(BigDecimal[] decimals, int precision) { return round(decimals, precision, null); } /** * Rounds the given list of decimals to the given precision with the given rounding algorithm. * * @param decimals A list of decimals to be rounded. * @param precision The number of decimal places to round to. * @param roundingMode The rounding algorithm to be used. * @return The given list of decimals rounded to the given precision using the given algorithm. */ public static BigDecimal[] round(BigDecimal[] decimals, int precision, RoundingMode roundingMode) { if (decimals == null) return null; BigDecimal[] output = new BigDecimal[decimals.length]; for (int i = 0; i < decimals.length; i++) { output[i] = round(decimals[i], precision, roundingMode); } return output; } /** * Rounds the given list of decimals to the given precision using the default rounding algorithm. * * @param decimals A list of decimals to be rounded. * @param precision The number of decimal places to round to. * @return The given decimal rounded to the given precision using the default algorithm. */ public static BigDecimal[] round(BigDecimal[] decimals, String precision) { return round(decimals, precision, null); } /** * Rounds the given list of decimals to the given precision with the given rounding algorithm. * * @param decimals A list of decimals to be rounded. * @param precision The number of decimal places to round to. * @param roundingMode The rounding algorithm to be used. * @return The given list of decimals rounded to the given precision using the given algorithm. */ public static BigDecimal[] round(BigDecimal[] decimals, String precision, String roundingMode) { if (precision == null) return decimals; return round(decimals, Integer.parseInt(precision), normalizeRoundingMode(roundingMode)); } /** * Returns the given rounding mode if specified, or the default rounding mode. * * @param roundingMode An optional rounding algorithm name. * @return The rounding algorithm to be used by the caller. */ private static RoundingMode normalizeRoundingMode(String roundingMode) { return roundingMode == null ? DEFAULT_ROUNDING_MODE : RoundingMode.valueOf(roundingMode); } }