BigDecimal round Up - Java java.math

Java examples for java.math:BigDecimal

Description

BigDecimal round Up

Demo Code

/*/*from  w w  w .j a v a 2s. c  o  m*/
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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;

public class Main{
    public static void main(String[] argv) throws Exception{
        BigDecimal firstCutWidth = new BigDecimal("1234");
        int baseVal = 2;
        System.out.println(roundUp(firstCutWidth,baseVal));
    }
    private static final BigDecimal THOUSAND = new BigDecimal(1000);
    private static final BigDecimal HUNDRED = new BigDecimal(100);
    private static final int SCALE = 2;
    
    public static BigDecimal roundUp(BigDecimal firstCutWidth, int baseVal) {
        BigDecimal tensVal = getTensVal(firstCutWidth);
        firstCutWidth = ArithmeticUtil.subtract(firstCutWidth, tensVal);
        BigDecimal subVal = ArithmeticUtil.subtract(tensVal,
                new BigDecimal(baseVal));
        if (subVal.doubleValue() >= 0) {
            // upto 100
            return ArithmeticUtil.add(firstCutWidth, new BigDecimal(100));
        } else {
            // upto 50
            return ArithmeticUtil.add(firstCutWidth,
                    new BigDecimal(baseVal));
        }
    }
    public static BigDecimal getTensVal(BigDecimal val) {
        return val.remainder(THOUSAND).remainder(HUNDRED);

    }
    public static BigDecimal subtract(BigDecimal left, BigDecimal right) {
        return left.subtract(right).setScale(SCALE,
                BigDecimal.ROUND_HALF_EVEN);
    }
    public static BigDecimal add(BigDecimal left, BigDecimal right) {
        return left.add(right).setScale(SCALE, BigDecimal.ROUND_HALF_EVEN);
    }
}

Related Tutorials