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 FormModifier 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, setRoundingMode
protected 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.IllegalArgumentException
protected 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.NumberFormat
public java.lang.Object clone()
clone
in class java.text.NumberFormat
public java.lang.String toPattern()
public java.lang.StringBuffer format(double number, java.lang.StringBuffer result, java.text.FieldPosition fieldPosition)
format
in class java.text.NumberFormat
public java.lang.StringBuffer format(long number, java.lang.StringBuffer result, java.text.FieldPosition fieldPosition)
format
in class java.text.NumberFormat
public java.lang.Number parse(java.lang.String text, java.text.ParsePosition parsePosition)
parse
in class java.text.NumberFormat
public 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.NumberFormat
public boolean isGroupingUsed()
isGroupingUsed
in class java.text.NumberFormat
public void setGroupingUsed(boolean newValue)
setGroupingUsed
in class java.text.NumberFormat
public int getMaximumIntegerDigits()
getMaximumIntegerDigits
in class java.text.NumberFormat
public void setMaximumIntegerDigits(int newValue)
setMaximumIntegerDigits
in class java.text.NumberFormat
public int getMinimumIntegerDigits()
getMinimumIntegerDigits
in class java.text.NumberFormat
public void setMinimumIntegerDigits(int newValue)
setMinimumIntegerDigits
in class java.text.NumberFormat
public int getMaximumFractionDigits()
getMaximumFractionDigits
in class java.text.NumberFormat
public void setMaximumFractionDigits(int newValue)
setMaximumFractionDigits
in class java.text.NumberFormat
public int getMinimumFractionDigits()
getMinimumFractionDigits
in class java.text.NumberFormat
public void setMinimumFractionDigits(int newValue)
setMinimumFractionDigits
in class java.text.NumberFormat
public int getExpMaximumIntegerDigits()
public void setExpMaximumIntegerDigits(int newValue)
public int getExpMinimumIntegerDigits()
public void setExpMinimumIntegerDigits(int newValue)
public static void main(java.lang.String[] args)