diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java |
Publish
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java b/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java new file mode 100644 index 00000000000..303674bb504 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java @@ -0,0 +1,56 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.binaryprefix; + +/** + * An amount scaled by a binary prefix. + * + * <p> + * Examples: 2 kilo, 2 mega, ... + * </p> + * + * @author tonytv + */ +public final class BinaryScaledAmount { + public final double amount; + public final BinaryPrefix binaryPrefix; + + public BinaryScaledAmount(double amount, BinaryPrefix binaryPrefix) { + this.amount = amount; + this.binaryPrefix = binaryPrefix; + } + + public BinaryScaledAmount() { + this(0, BinaryPrefix.unit); + } + + public long as(BinaryPrefix newBinaryPrefix) { + return Math.round(newBinaryPrefix.convertFrom(amount, binaryPrefix)); + } + + public boolean equals(BinaryScaledAmount candidate) { + return BinaryPrefix.unit.convertFrom(amount, binaryPrefix) == + BinaryPrefix.unit.convertFrom(candidate.amount, candidate.binaryPrefix); + } + + public BinaryScaledAmount multiply(double d) { + return new BinaryScaledAmount(d*amount, binaryPrefix); + } + + public BinaryScaledAmount divide(double d) { + return multiply(1/d); + } + + @Override + public boolean equals(Object candidate) { + if (!(candidate instanceof BinaryScaledAmount)) { + return false; + } else { + return equals((BinaryScaledAmount)candidate); + } + } + + @Override + public int hashCode() { + return (int)BinaryPrefix.unit.convertFrom(amount, binaryPrefix); + } +} |