Java tutorial
//package com.java2s; /* * Copyright 2014-2016 OpenEstate.org. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.math.BigDecimal; import javax.xml.bind.DatatypeConverter; public class Main { /** * Write a positive {@link BigDecimal} value into XML output * with maximal 3 decimal places. * * @param value * value to write * * @return * XML string * * @throws IllegalArgumentException * if a validation error occured */ public static String printDecimalPositive(BigDecimal value) { return printDecimal(value, BigDecimal.ZERO, null, 3, false); } /** * Write a {@link BigDecimal} value into XML output. * * @param value * value to write * * @param min * minimal value * * @param max * maximal value * * @param precision * number of decimal places * * @return * XML string * * @throws IllegalArgumentException * if a validation error occured */ private static String printDecimal(BigDecimal value, BigDecimal min, BigDecimal max, int precision, boolean zeroIncluded) { if (value == null) { throw new IllegalArgumentException("The provided double value NULL is invalid!"); } value = value.setScale(precision, BigDecimal.ROUND_HALF_UP); if (min != null && value.compareTo(min) <= 0) { if (!zeroIncluded || !BigDecimal.ZERO.equals(value)) { throw new IllegalArgumentException( "The provided double value " + value + " is too small (minimum is " + min + ")!"); } } if (max != null && value.compareTo(max) >= 0) { throw new IllegalArgumentException( "The provided double value " + value + " is too high (maximum is " + max + ")!"); } return DatatypeConverter.printDecimal(value); } }