001/*-
002 * #%L
003 * HAPI FHIR - Core Library
004 * %%
005 * Copyright (C) 2014 - 2024 Smile CDR, Inc.
006 * %%
007 * Licensed under the Apache License, Version 2.0 (the "License");
008 * you may not use this file except in compliance with the License.
009 * You may obtain a copy of the License at
010 *
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 * #L%
019 */
020package ca.uhn.fhir.util;
021
022import org.apache.commons.lang3.tuple.Pair;
023
024import java.math.BigDecimal;
025
026public class NumericParamRangeUtil {
027
028        private NumericParamRangeUtil() {}
029
030        /**
031         * Provides a Pair containing the low and high boundaries for a range based on the received number
032         * characteristics. Note that the scale is used to calculate significant figures
033         * @param theNumber the number which range is returned
034         * @return a Pair of BigDecimal(s) with the low and high range boundaries
035         */
036        public static Pair<BigDecimal, BigDecimal> getRange(BigDecimal theNumber) {
037                BigDecimal halfRange = BigDecimal.valueOf(.5).movePointLeft(theNumber.scale());
038                return Pair.of(theNumber.subtract(halfRange), theNumber.add(halfRange));
039        }
040}