All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.icu.number.FractionPrecision Maven / Gradle / Ivy

Go to download

International Component for Unicode for Java (ICU4J) is a mature, widely used Java library providing Unicode and Globalization support

There is a newer version: 76.1
Show newest version
// © 2017 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
package com.ibm.icu.number;

import com.ibm.icu.impl.number.RoundingUtils;

/**
 * A class that defines a rounding strategy based on a number of fraction places and optionally
 * significant digits to be used when formatting numbers in NumberFormatter.
 *
 * 

* To create a FractionPrecision, use one of the factory methods on Precision. * * @stable ICU 60 * @see NumberFormatter */ public abstract class FractionPrecision extends Precision { /* package-private */ FractionPrecision() { } /** * Ensure that no less than this number of significant digits are retained when rounding according to * fraction rules. * *

* For example, with integer rounding, the number 3.141 becomes "3". However, with minimum figures * set to 2, 3.141 becomes "3.1" instead. * *

* This setting does not affect the number of trailing zeros. For example, 3.01 would print as "3", * not "3.0". * * @param minSignificantDigits * The number of significant figures to guarantee. * @return A Precision for chaining or passing to the NumberFormatter rounding() setter. * @stable ICU 60 * @see NumberFormatter */ public Precision withMinDigits(int minSignificantDigits) { if (minSignificantDigits >= 1 && minSignificantDigits <= RoundingUtils.MAX_INT_FRAC_SIG) { return constructFractionSignificant(this, minSignificantDigits, -1); } else { throw new IllegalArgumentException("Significant digits must be between 1 and " + RoundingUtils.MAX_INT_FRAC_SIG + " (inclusive)"); } } /** * Ensure that no more than this number of significant digits are retained when rounding according to * fraction rules. * *

* For example, with integer rounding, the number 123.4 becomes "123". However, with maximum figures * set to 2, 123.4 becomes "120" instead. * *

* This setting does not affect the number of trailing zeros. For example, with fixed fraction of 2, * 123.4 would become "120.00". * * @param maxSignificantDigits * Round the number to no more than this number of significant figures. * @return A Precision for chaining or passing to the NumberFormatter rounding() setter. * @stable ICU 60 * @see NumberFormatter */ public Precision withMaxDigits(int maxSignificantDigits) { if (maxSignificantDigits >= 1 && maxSignificantDigits <= RoundingUtils.MAX_INT_FRAC_SIG) { return constructFractionSignificant(this, -1, maxSignificantDigits); } else { throw new IllegalArgumentException("Significant digits must be between 1 and " + RoundingUtils.MAX_INT_FRAC_SIG + " (inclusive)"); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy