public class ScientificFormat
extends java.text.NumberFormat
The aim of this class is to provide a flexible way to format large floating-point numbers. Its three modes allow one to format a fixed-precision decimal format, fixed-precision scientific notation, or a flexible format. With the flexible mode, scientific notation will be used if the decimal format would be larger than a specified number of characters (similar to the %g format in the C function printf).
The format can be fully configured just as its cousin, java.text.DecimalFormat, can. The pattern syntax supported by the applyPattern() method is a superset of that supported by DecimalFormat. (In fact, when a pure DecimalFormat pattern is used with this class, the resulting format is identical to that of DecimalFormat.) Below is a semi-formal description of the pattern syntax (see also java.text.DecimalFormat API documentation):
Patterns:
pattern := ('!'exppattern | '~altpattern' | {'@'}decipattern)
decipattern := a DecimalFormat-supported pattern
altpattern := decipattern{:int}{^intpattern}
exppattern := decipattern{^intpattern}
intpattern := subintpattern{;subintpattern}
subintpattern := {prefix}integer{suffix}
int := an integer number
prefix,suffix := '\\u0000'..'\\uFFFD'
One uses the !exppattern to force an exponential format,
@decipattern for a decimal format, and ~altpattern for a
flexible format. The ^intpattern specificly controls the
format of the exponent when applicable. The default pattern is
"~#0.####;-#0.####:9^E+#0;E-#0"; that is, it uses the
flexible mode that results in decimal format when the number can be
formatted to less than 9 characters and exponential otherwise. This author finds the pattern syntax sufficiently opaque that he recommends instantiating with the default behavior and then modifying it via the various set methods. For example, setMaxWidth() will change the cut-off width between decimal and exponential formats. The set...Mode() methods can be used to switch between the different formatting modes.
DecimalFormat,
Serialized Form| Modifier and Type | Field | Description |
|---|---|---|
protected static java.lang.String |
defdfmt |
|
protected static java.lang.String |
defefmt |
|
protected java.text.DecimalFormat |
dfmt |
|
protected java.text.DecimalFormat |
efmt |
|
static int |
EXPONENT_FIELD |
|
protected int |
maxwidth |
| Constructor | Description |
|---|---|
ScientificFormat() |
Create a ScientificFormat using the default pattern and symbols
for the default locale.
|
ScientificFormat(java.lang.String pattern) |
Creates a ScientificFormat using a given pattern
|
ScientificFormat(java.util.Locale locale) |
Create a ScientificFormat using the default pattern for the
given locale.
|
ScientificFormat(java.util.Locale locale,
java.lang.String pattern) |
Creates a ScientificFormat using a given pattern for the specified
locale
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
applyExponentPattern(java.lang.String pattern) |
|
void |
applyLocalizedPattern(java.lang.String pattern) |
|
void |
applyMantissaPattern(java.lang.String pattern) |
|
void |
applyPattern(java.lang.String pattern) |
apply this pattern
|
java.lang.Object |
clone() |
|
boolean |
equals(java.lang.Object obj) |
|
protected static java.lang.Object[] |
extractQuotedStrings(java.lang.String text) |
|
java.lang.StringBuffer |
format(double number,
java.lang.StringBuffer result,
java.text.FieldPosition fieldPosition) |
|
java.lang.StringBuffer |
format(long number,
java.lang.StringBuffer result,
java.text.FieldPosition fieldPosition) |
|
int |
getExpGroupingSize() |
|
int |
getExpMaximumIntegerDigits() |
|
int |
getExpMinimumIntegerDigits() |
|
java.lang.String |
getExpNegativePrefix() |
|
java.lang.String |
getExpNegativeSuffix() |
|
java.lang.String |
getExpPositivePrefix() |
|
java.lang.String |
getExpPositiveSuffix() |
|
int |
getGroupingSize() |
|
int |
getMaximumFractionDigits() |
|
int |
getMaximumIntegerDigits() |
|
int |
getMaxWidth() |
|
int |
getMinimumFractionDigits() |
|
int |
getMinimumIntegerDigits() |
|
java.lang.String |
getNegativePrefix() |
|
java.lang.String |
getNegativeSuffix() |
|
java.lang.String |
getPositivePrefix() |
|
java.lang.String |
getPositiveSuffix() |
|
boolean |
isDecimalMode() |
|
boolean |
isDecimalSeparatorAlwaysShown() |
|
boolean |
isExponentialMode() |
|
boolean |
isFlexibleMode() |
|
boolean |
isGroupingUsed() |
|
static void |
main(java.lang.String[] args) |
|
java.lang.Number |
parse(java.lang.String text,
java.text.ParsePosition parsePosition) |
Parse out a number from the given text and return it as a Long if
possible; otherwise, return it as a Double.
|
java.lang.Number |
parseAsDecimal(java.lang.String text,
java.text.ParsePosition parsePosition) |
parse the input string, interpreting it as regular decimal format.
|
java.lang.Number |
parseAsExponential(java.lang.String text,
java.text.ParsePosition parsePosition) |
parse the input string, interpreting it as exponential format.
|
java.lang.Number |
parseAsFlexible(java.lang.String text,
java.text.ParsePosition parsePosition) |
parse the input string, interpreting it as either regular decimal
format or exponential format.
|
protected static java.lang.String |
replaceQuotedStrings(java.util.Vector strings,
java.util.Vector positions,
java.lang.String input,
int start) |
|
void |
setDecimalMode() |
|
void |
setDecimalSeparatorAlwaysShown(boolean newValue) |
|
void |
setExpGroupingSize(int newValue) |
|
void |
setExpMaximumIntegerDigits(int newValue) |
|
void |
setExpMinimumIntegerDigits(int newValue) |
|
void |
setExpNegativePrefix(java.lang.String newValue) |
|
void |
setExpNegativeSuffix(java.lang.String newValue) |
|
void |
setExponentialMode() |
|
void |
setExpPositivePrefix(java.lang.String newValue) |
|
void |
setExpPositiveSuffix(java.lang.String newValue) |
|
void |
setFlexibleMode() |
|
void |
setGroupingSize(int newValue) |
|
void |
setGroupingUsed(boolean newValue) |
|
void |
setMaximumFractionDigits(int newValue) |
|
void |
setMaximumIntegerDigits(int newValue) |
|
void |
setMaxWidth(int width) |
the the maximum width of the decimal format.
|
void |
setMinimumFractionDigits(int newValue) |
|
void |
setMinimumIntegerDigits(int newValue) |
|
void |
setNegativePrefix(java.lang.String newValue) |
|
void |
setNegativeSuffix(java.lang.String newValue) |
|
void |
setParseIntegerOnly(boolean value) |
|
void |
setPositivePrefix(java.lang.String newValue) |
|
void |
setPositiveSuffix(java.lang.String newValue) |
|
java.lang.String |
toPattern() |
format, format, format, getAvailableLocales, getCurrency, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, getRoundingMode, hashCode, isParseIntegerOnly, parse, parseObject, setCurrency, setRoundingModeprotected java.text.DecimalFormat efmt
protected java.text.DecimalFormat dfmt
protected int maxwidth
protected static final java.lang.String defdfmt
protected static final java.lang.String defefmt
public static final int EXPONENT_FIELD
public ScientificFormat()
public ScientificFormat(java.util.Locale locale)
public ScientificFormat(java.lang.String pattern)
public ScientificFormat(java.util.Locale locale,
java.lang.String pattern)
public void applyPattern(java.lang.String pattern)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentExceptionprotected static java.lang.Object[] extractQuotedStrings(java.lang.String text)
protected static java.lang.String replaceQuotedStrings(java.util.Vector strings,
java.util.Vector positions,
java.lang.String input,
int start)
public void applyLocalizedPattern(java.lang.String pattern)
public void applyMantissaPattern(java.lang.String pattern)
public void applyExponentPattern(java.lang.String pattern)
public void setMaxWidth(int width)
public int getMaxWidth()
public java.lang.String getPositivePrefix()
public void setPositivePrefix(java.lang.String newValue)
public java.lang.String getNegativePrefix()
public void setNegativePrefix(java.lang.String newValue)
public java.lang.String getPositiveSuffix()
public void setPositiveSuffix(java.lang.String newValue)
public java.lang.String getNegativeSuffix()
public void setNegativeSuffix(java.lang.String newValue)
public java.lang.String getExpPositivePrefix()
public void setExpPositivePrefix(java.lang.String newValue)
public java.lang.String getExpNegativePrefix()
public void setExpNegativePrefix(java.lang.String newValue)
public java.lang.String getExpPositiveSuffix()
public void setExpPositiveSuffix(java.lang.String newValue)
public java.lang.String getExpNegativeSuffix()
public void setExpNegativeSuffix(java.lang.String newValue)
public void setExponentialMode()
public boolean isExponentialMode()
public void setDecimalMode()
public boolean isDecimalMode()
public void setFlexibleMode()
public boolean isFlexibleMode()
public int getGroupingSize()
public void setGroupingSize(int newValue)
public int getExpGroupingSize()
public void setExpGroupingSize(int newValue)
public boolean isDecimalSeparatorAlwaysShown()
public void setDecimalSeparatorAlwaysShown(boolean newValue)
public boolean equals(java.lang.Object obj)
equals in class java.text.NumberFormatpublic java.lang.Object clone()
clone in class java.text.NumberFormatpublic java.lang.String toPattern()
public java.lang.StringBuffer format(double number,
java.lang.StringBuffer result,
java.text.FieldPosition fieldPosition)
format in class java.text.NumberFormatpublic java.lang.StringBuffer format(long number,
java.lang.StringBuffer result,
java.text.FieldPosition fieldPosition)
format in class java.text.NumberFormatpublic java.lang.Number parse(java.lang.String text,
java.text.ParsePosition parsePosition)
parse in class java.text.NumberFormatpublic java.lang.Number parseAsExponential(java.lang.String text,
java.text.ParsePosition parsePosition)
public java.lang.Number parseAsDecimal(java.lang.String text,
java.text.ParsePosition parsePosition)
public java.lang.Number parseAsFlexible(java.lang.String text,
java.text.ParsePosition parsePosition)
public void setParseIntegerOnly(boolean value)
setParseIntegerOnly in class java.text.NumberFormatpublic boolean isGroupingUsed()
isGroupingUsed in class java.text.NumberFormatpublic void setGroupingUsed(boolean newValue)
setGroupingUsed in class java.text.NumberFormatpublic int getMaximumIntegerDigits()
getMaximumIntegerDigits in class java.text.NumberFormatpublic void setMaximumIntegerDigits(int newValue)
setMaximumIntegerDigits in class java.text.NumberFormatpublic int getMinimumIntegerDigits()
getMinimumIntegerDigits in class java.text.NumberFormatpublic void setMinimumIntegerDigits(int newValue)
setMinimumIntegerDigits in class java.text.NumberFormatpublic int getMaximumFractionDigits()
getMaximumFractionDigits in class java.text.NumberFormatpublic void setMaximumFractionDigits(int newValue)
setMaximumFractionDigits in class java.text.NumberFormatpublic int getMinimumFractionDigits()
getMinimumFractionDigits in class java.text.NumberFormatpublic void setMinimumFractionDigits(int newValue)
setMinimumFractionDigits in class java.text.NumberFormatpublic int getExpMaximumIntegerDigits()
public void setExpMaximumIntegerDigits(int newValue)
public int getExpMinimumIntegerDigits()
public void setExpMinimumIntegerDigits(int newValue)
public static void main(java.lang.String[] args)