Java Long Number Divide divWithRound(long p, long q)

Here you can find the source of divWithRound(long p, long q)

Description

div With Round

License

Open Source License

Parameter

Parameter Description
p to delete
q should be positive

Return

division result with rounding

Declaration

protected static long divWithRound(long p, long q) 

Method Source Code

//package com.java2s;
/*//from w w w. j  a v a  2 s .  c o m
 * Copyright 2016 Dmitry Spikhalskiy. All Rights Reserved.
 *
 * 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.
 */

public class Main {
    /**
     *
     * @param p to delete
     * @param q should be positive
     * @return division result with rounding
     */
    protected static long divWithRound(long p, long q) {
        long div = p / q;
        long floor;
        long ceil;
        if (p >= 0) {
            floor = q * div;
            ceil = floor + q;
            return (ceil - p >= p - floor) ? div : div + 1;
        } else {
            ceil = q * div;
            floor = ceil - q;
            return (ceil - p <= p - floor) ? div : div - 1;

        }

    }
}

Related

  1. divideAndRoundUp(long x, long y)
  2. divideForMean(long sum, long count)
  3. divideLongBy1000(long l)
  4. divideLongs(Long a, Long b)
  5. divideZero(final long dividend, final long divisor, final long defaultDivisor)