
javax.measure.MetricPrefix Maven / Gradle / Ivy
/*
* Units of Measurement API
* Copyright (c) 2014-2021, Jean-Marie Dautelle, Werner Keil, Otavio Santana.
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
* and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of JSR-385 nor the names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package javax.measure;
/**
* Provides support for the 20 prefixes used in the metric system (decimal multiples and submultiples of units). For example:
*
*
* {@code
* import static tech.units.indriya.unit.Units.*; // Static import.
* import static javax.measure.MetricPrefix.*; // Static import.
* import javax.measure.*;
* import javax.measure.quantity.*;
* ...
* Unit HECTOPASCAL = HECTO(PASCAL);
* Unit KILOMETRE = KILO(METRE);}
*
*
* @see Wikipedia: Metric Prefix
* @author Jean-Marie Dautelle
* @author Werner Keil
* @version 2.0, June 28, 2019
* @since 2.0
*/
public enum MetricPrefix implements Prefix {
/** Prefix for 1024. */
YOTTA("Y", 24),
/** Prefix for 1021. */
ZETTA("Z", 21),
/** Prefix for 1018. */
EXA("E", 18),
/** Prefix for 1015. */
PETA("P", 15),
/** Prefix for 1012. */
TERA("T", 12),
/** Prefix for 109. */
GIGA("G", 9),
/** Prefix for 106. */
MEGA("M", 6),
/** Prefix for 103. */
KILO("k", 3),
/** Prefix for 102. */
HECTO("h", 2),
/** Prefix for 101. */
DEKA("da", 1),
/** Prefix for 10-1. */
DECI("d", -1),
/** Prefix for 10-2. */
CENTI("c", -2),
/** Prefix for 10-3. */
MILLI("m", -3),
/** Prefix for 10-6. */
MICRO("\u00b5", -6),
/** Prefix for 10-9. */
NANO("n", -9),
/** Prefix for 10-12. */
PICO("p", -12),
/** Prefix for 10-15. */
FEMTO("f", -15),
/** Prefix for 10-18. */
ATTO("a", -18),
/** Prefix for 10-21. */
ZEPTO("z", -21),
/** Prefix for 10-24. */
YOCTO("y", -24);
/**
* The symbol of this prefix, as returned by {@link #getSymbol}.
*
* @serial
* @see #getSymbol()
*/
private final String symbol;
/**
* Exponent part of the associated factor in base^exponent representation.
*/
private final int exponent;
/**
* Creates a new prefix.
*
* @param symbol
* the symbol of this prefix.
* @param exponent
* part of the associated factor in base^exponent representation.
*/
private MetricPrefix(String symbol, int exponent) {
this.symbol = symbol;
this.exponent = exponent;
}
/**
* Returns the specified unit multiplied by the factor 1024
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e24)
.
*/
public static > Unit YOTTA(Unit unit) {
return unit.prefix(YOTTA);
}
/**
* Returns the specified unit multiplied by the factor 1021
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e21)
.
*/
public static > Unit ZETTA(Unit unit) {
return unit.prefix(ZETTA);
}
/**
* Returns the specified unit multiplied by the factor 1018
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e18)
.
*/
public static > Unit EXA(Unit unit) {
return unit.prefix(EXA);
}
/**
* Returns the specified unit multiplied by the factor 1015
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e15)
.
*/
public static > Unit PETA(Unit unit) {
return unit.prefix(PETA);
}
/**
* Returns the specified unit multiplied by the factor 1012
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e12)
.
*/
public static > Unit TERA(Unit unit) {
return unit.prefix(TERA);
}
/**
* Returns the specified unit multiplied by the factor 109
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e9)
.
*/
public static > Unit GIGA(Unit unit) {
return unit.prefix(GIGA);
}
/**
* Returns the specified unit multiplied by the factor 106
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e6)
.
*/
public static > Unit MEGA(Unit unit) {
return unit.prefix(MEGA);
}
/**
* Returns the specified unit multiplied by the factor 103
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e3)
.
*/
public static > Unit KILO(Unit unit) {
return unit.prefix(KILO);
}
/**
* Returns the specified unit multiplied by the factor 102
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e2)
.
*/
public static > Unit HECTO(Unit unit) {
return unit.prefix(HECTO);
}
/**
* Returns the specified unit multiplied by the factor 101
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e1)
.
*/
public static > Unit DEKA(Unit unit) {
return unit.prefix(DEKA);
}
/**
* Returns the specified unit multiplied by the factor 10-1
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-1)
.
*/
public static > Unit DECI(Unit unit) {
return unit.prefix(DECI);
}
/**
* Returns the specified unit multiplied by the factor 10-2
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-2)
.
*/
public static > Unit CENTI(Unit unit) {
return unit.prefix(CENTI);
}
/**
* Returns the specified unit multiplied by the factor 10-3
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-3)
.
*/
public static > Unit MILLI(Unit unit) {
return unit.prefix(MILLI);
}
/**
* Returns the specified unit multiplied by the factor 10-6
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-6)
.
*/
public static > Unit MICRO(Unit unit) {
return unit.prefix(MICRO);
}
/**
* Returns the specified unit multiplied by the factor 10-9
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-9)
.
*/
public static > Unit NANO(Unit unit) {
return unit.prefix(NANO);
}
/**
* Returns the specified unit multiplied by the factor 10-12
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-12)
.
*/
public static > Unit PICO(Unit unit) {
return unit.prefix(PICO);
}
/**
* Returns the specified unit multiplied by the factor 10-15
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-15)
.
*/
public static > Unit FEMTO(Unit unit) {
return unit.prefix(FEMTO);
}
/**
* Returns the specified unit multiplied by the factor 10-18
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-18)
.
*/
public static > Unit ATTO(Unit unit) {
return unit.prefix(ATTO);
}
/**
* Returns the specified unit multiplied by the factor 10-21
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-21)
.
*/
public static > Unit ZEPTO(Unit unit) {
return unit.prefix(ZEPTO);
}
/**
* Returns the specified unit multiplied by the factor 10-24
*
* @param
* type of the quantity measured by the unit.
* @param unit
* any unit.
* @return unit.times(1e-24)
.
*/
public static > Unit YOCTO(Unit unit) {
return unit.prefix(YOCTO);
}
/**
* Returns the symbol of this prefix.
*
* @return this prefix symbol, not {@code null}.
*/
@Override
public String getSymbol() {
return symbol;
}
/**
* Base part of the associated factor in {@code base^exponent} representation. For metric prefix, this is always 10.
*/
@Override
public Integer getValue() {
return 10;
}
/**
* Exponent part of the associated factor in {@code base^exponent} representation.
*/
@Override
public int getExponent() {
return exponent;
}
/**
* Returns the name of this prefix.
*
* @return this prefix name, not {@code null}.
*/
@Override
public String getName() {
return name();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy