📄 numberformat.java
字号:
* * @param locale The desired locale. * * @return An instance of the default <code>NumberFormat</code> class. */ public static final NumberFormat getNumberInstance () { return getNumberInstance (Locale.getDefault()); } /** * This method returns a general purpose number formatting and parsing * class for the default locale. This will be a concrete subclass of * <code>NumberFormat</code>, but the actual class returned is dependent * on the locale. * * @return An instance of a generic number formatter for the default locale. */ public static NumberFormat getNumberInstance (Locale loc) { return computeInstance (loc, "numberFormat", "#,##0.###"); } /** * This method returns an instance of <code>NumberFormat</code> suitable * for formatting and parsing percentage values in the default locale. * * @return An instance of <code>NumberFormat</code> for handling percentages. */ public static final NumberFormat getPercentInstance () { return getPercentInstance (Locale.getDefault()); } /** * This method returns an instance of <code>NumberFormat</code> suitable * for formatting and parsing percentage values in the specified locale. * * @param locale The desired locale. * * @return An instance of <code>NumberFormat</code> for handling percentages. */ public static NumberFormat getPercentInstance (Locale loc) { return computeInstance (loc, "percentFormat", "#,##0%"); } /** * This method returns a hash value for this object. * * @return The hash code. */ public int hashCode () { int hash = super.hashCode(); hash ^= (maximumFractionDigits + maximumIntegerDigits + minimumFractionDigits + minimumIntegerDigits); if (groupingUsed) hash ^= 0xf0f0; if (parseIntegerOnly) hash ^= 0x0f0f; return hash; } /** * This method tests whether or not grouping is in use. Grouping is * a method of marking separations in numbers, such as thousand separators * in the US English locale. The grouping positions and symbols are all * locale specific. As an example, with grouping disabled, the number one * million would appear as "1000000". With grouping enabled, this number * might appear as "1,000,000". (Both of these assume the US English * locale). * * @return <code>true</code> if grouping is enabled, * <code>false</code> otherwise. */ public boolean isGroupingUsed () { return groupingUsed; } /** * This method tests whether or not only integer values should be parsed. * If this class is parsing only integers, parsing stops at the decimal * point. * * @return <code>true</code> if only integers are parsed, * <code>false</code> otherwise. */ public boolean isParseIntegerOnly () { return parseIntegerOnly; } /** * This is a default constructor for use by subclasses. */ public NumberFormat () { } /** * This method parses the specified string into a <code>Number</code>. This * will be a <code>Long</code> if possible, otherwise it will be a * <code>Double</code>. If no number can be parsed, no exception is * thrown. Instead, the parse position remains at its initial index. * * @param str The string to parse. * @param pp The desired <code>ParsePosition</code>. * * @return The parsed <code>Number</code> */ public abstract Number parse (String sourceStr, ParsePosition pos); /** * This method parses the specified string into a <code>Number</code>. This * will be a <code>Long</code> if possible, otherwise it will be a * <code>Double</code>. If no number can be parsed, an exception will be * thrown. * * @param str The string to parse. * * @return The parsed <code>Number</code> * * @exception ParseException If no number can be parsed. */ public Number parse (String sourceStr) throws ParseException { ParsePosition pp = new ParsePosition (0); Number r = parse (sourceStr, pp); if (r == null) { int index = pp.getErrorIndex(); if (index < 0) index = pp.getIndex(); throw new ParseException ("couldn't parse number", index); } return r; } /** * This method parses the specified string into an <code>Object</code>. This * will be a <code>Long</code> if possible, otherwise it will be a * <code>Double</code>. If no number can be parsed, no exception is * thrown. Instead, the parse position remains at its initial index. * * @param str The string to parse. * @param pp The desired <code>ParsePosition</code>. * * @return The parsed <code>Object</code> */ public final Object parseObject (String sourceStr, ParsePosition pos) { return parse (sourceStr, pos); } /** * This method sets the grouping behavior of this formatter. Grouping is * a method of marking separations in numbers, such as thousand separators * in the US English locale. The grouping positions and symbols are all * locale specific. As an example, with grouping disabled, the number one * million would appear as "1000000". With grouping enabled, this number * might appear as "1,000,000". (Both of these assume the US English * locale). * * @param groupingUsed <code>true</code> to enable grouping, * <code>false</code> to disable it. */ public void setGroupingUsed (boolean newValue) { groupingUsed = newValue; } /** * This method sets the maximum number of digits allowed in the fraction * portion of a number to the specified value. If this is less than the * current minimum allowed digits, the minimum allowed digits value will * be lowered to be equal to the new maximum allowed digits value. * * @param maximumFractionDigits The new maximum fraction digits value. */ public void setMaximumFractionDigits (int newValue) { maximumFractionDigits = newValue; if (getMinimumFractionDigits () > maximumFractionDigits) setMinimumFractionDigits (maximumFractionDigits); } /** * This method sets the maximum number of digits allowed in the integer * portion of a number to the specified value. If this is less than the * current minimum allowed digits, the minimum allowed digits value will * be lowered to be equal to the new maximum allowed digits value. * * @param maximumIntegerDigits The new maximum integer digits value. */ public void setMaximumIntegerDigits (int newValue) { maximumIntegerDigits = newValue; if (getMinimumIntegerDigits () > maximumIntegerDigits) setMinimumIntegerDigits (maximumIntegerDigits); } /** * This method sets the minimum number of digits allowed in the fraction * portion of a number to the specified value. If this is greater than the * current maximum allowed digits, the maximum allowed digits value will * be raised to be equal to the new minimum allowed digits value. * * @param minimumFractionDigits The new minimum fraction digits value. */ public void setMinimumFractionDigits (int newValue) { minimumFractionDigits = newValue; if (getMaximumFractionDigits () < minimumFractionDigits) setMaximumFractionDigits (minimumFractionDigits); } /** * This method sets the minimum number of digits allowed in the integer * portion of a number to the specified value. If this is greater than the * current maximum allowed digits, the maximum allowed digits value will * be raised to be equal to the new minimum allowed digits value. * * @param minimumIntegerDigits The new minimum integer digits value. */ public void setMinimumIntegerDigits (int newValue) { minimumIntegerDigits = newValue; if (getMaximumIntegerDigits () < minimumIntegerDigits) setMaximumIntegerDigits (minimumIntegerDigits); } /** * This method sets the parsing behavior of this object to parse only * integers or not. * * @param parseIntegerOnly <code>true</code> to parse only integers, * <code>false</code> otherwise. */ public void setParseIntegerOnly (boolean value) { parseIntegerOnly = value; } /** * This method is a specialization of the format method that performs * a simple formatting of the specified <code>double</code> number. * * @param number The <code>double</code> to format. * * @return The formatted number */ public final String format (double number) { StringBuffer sbuf = new StringBuffer(50); format (number, sbuf, null); return sbuf.toString(); } // These field names are fixed by the serialization spec. boolean groupingUsed; int maximumFractionDigits; private byte maxFractionDigits; int maximumIntegerDigits; private byte maxIntegerDigits; int minimumFractionDigits; private byte minFractionDigits; int minimumIntegerDigits; private byte minIntegerDigits; boolean parseIntegerOnly; private int serialVersionOnStream; private static final long serialVersionUID = -2308460125733713944L; private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); if (serialVersionOnStream < 1) { maximumFractionDigits = maxFractionDigits; maximumIntegerDigits = maxIntegerDigits; minimumFractionDigits = minFractionDigits; minimumIntegerDigits = minIntegerDigits; serialVersionOnStream = 1; } } private void writeObject(ObjectOutputStream stream) throws IOException { maxFractionDigits = maximumFractionDigits < Byte.MAX_VALUE ? (byte) maximumFractionDigits : Byte.MAX_VALUE; maxIntegerDigits = maximumIntegerDigits < Byte.MAX_VALUE ? (byte) maximumIntegerDigits : Byte.MAX_VALUE; minFractionDigits = minimumFractionDigits < Byte.MAX_VALUE ? (byte) minimumFractionDigits : Byte.MAX_VALUE; minIntegerDigits = minimumIntegerDigits < Byte.MAX_VALUE ? (byte) minimumIntegerDigits : Byte.MAX_VALUE; serialVersionOnStream = 1; stream.defaultWriteObject(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -