blob: 4ad2eeb67f6047d0a76352ce0d1e81b4499424b7 [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je.utilint;
public class IntegralLongAvg extends Number {
private static final long serialVersionUID = 1L;
private long numerator;
private long denominator;
private long factor = 1;
public IntegralLongAvg (long numerator, long denominator, long factor) {
this.numerator = numerator;
this.denominator = denominator;
this.factor = factor;
}
public IntegralLongAvg (long numerator, long denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
public IntegralLongAvg (IntegralLongAvg val) {
this.numerator = val.numerator;
this.denominator = val.denominator;
this.factor = val.factor;
}
public void add(IntegralLongAvg other) {
numerator += other.numerator;
denominator += other.denominator;
}
public void subtract(IntegralLongAvg other) {
numerator -= other.numerator;
denominator -= other.denominator;
}
public long compute() {
return (denominator != 0) ?
(numerator * factor) / denominator :
0;
}
public long getNumerator() {
return numerator;
}
public void setNumerator(long numerator) {
this.numerator = numerator;
}
public long getDenominator() {
return denominator;
}
public void setDenominator(long denominator) {
this.denominator = denominator;
}
@Override
public int intValue() {
return (int)compute();
}
@Override
public long longValue() {
return compute();
}
@Override
public float floatValue() {
return compute();
}
@Override
public double doubleValue() {
return compute();
}
}