所有类


java.text
类 NumberFormat

java.lang.Object
  继承者 java.text.Format
      继承者 java.text.NumberFormat
所有已实现的接口:
Serializable, Cloneable
直接已知子类:
ChoiceFormat, DecimalFormat

public abstract class NumberFormat
   
   
   
   
   
extends Format

NumberFormat 是所有数字格式的抽象基类。此类提供了格式化和分析数字的接口。NumberFormat 还提供了一些方法,用来确定哪些语言环境具有数字格式,以及它们的名称是什么。

NumberFormat 有助于格式化和分析任何语言环境的数字。代码能够完全独立于语言环境对于小数点、千位分隔符或特殊的十进制数字的约定,甚至与数字格式是否为十进制也是无关的。

为了格式化当前语言环境的数字,要使用一个工厂类方法:

  myString = NumberFormat.getInstance().format(myNumber);
 
如果格式化多个数字,那么获得该格式并多次使用它是更为高效的做法,这样系统就不必多次获取关于语言环境语言和国家/地区约定的信息了。
 NumberFormat nf = NumberFormat.getInstance();
 for (int i = 0; i < a.length; ++i) {
     output.println(nf.format(myNumber[i]) + "; ");
 }
 
要格式化不同语言环境的日期,可在 getInstance 的调用中指定它。
 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
 
还可以使用 NumberFormat 来分析数字:
 myNumber = nf.parse(myString);
 
使用 getInstancegetNumberInstance 来获取常规数字格式。使用 getIntegerInstance 来获取整数数字格式。使用 getCurrencyInstance 来获取货币数字格式。使用 getPercentInstance 来获取显示百分比的格式。使用此格式,小数 0.53 将显示为 53%。

使用诸如 setMinimumFractionDigits 这样的方法还可以控制数字的显示。如果想对格式化和分析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法获取的 NumberFormat 强制转换为 DecimalFormat。这适用于大多数语言环境;只是要记住将其放入一个 try 块中,以防遇到特殊情况。

NumberFormat 和 DecimalFormat 的作用在于一部分控制用于格式化,其余的用于分析。以下是对每种控制方法的详细描述,

setParseIntegerOnly : 只影响分析,例如,如果为 true,则 "3456.78" -> 3456(并保留恰好在索引 6 后面的分析位置),如果为 false,则 "3456.78" -> 3456.78(并保留恰好在索引 8 后面的分析位置)。此方法与格式化无关。如果希望在小数点后面没有数字的情况下不显示小数点,则使用 setDecimalSeparatorAlwaysShown。

setDecimalSeparatorAlwaysShown :只影响格式化,且只影响小数点后没有数字的情况,例如模式 "#,##0.##",如果为 true,则 3456.00 -> "3,456.",如果为 false,则 3456.00 -> "3456"。此方法与分析无关。如果希望分析在小数点处停止,则使用 setParseIntegerOnly。

还可以使用带有 ParsePositionFieldPositionparseformat 方法的形式,它们允许:

  • 逐步地分析字符串的各部分
  • 对齐小数点和其他区域
例如,可以通过两种方式对齐数字:
  1. 如果使用填充空格来对齐的等宽字体,可以在格式调用中传递 FieldPosition,令 field = INTEGER_FIELD。在输出时,getEndIndex 将被设置为整数的最后一个字符和小数之间的偏移量。在字符串前面加入 (desiredSpaceCount - getEndIndex) 个空格。
  2. 如果使用成比例的字体,则不是通过填充空格的方法,而以像素为单位度量从开始处到 getEndIndex 的字符串的宽度。然后在绘制文本之前将画笔移动 (desiredPixelWidth - widthToAlignmentPoint) 个像素。对于没有小数但可能在末尾有其他字符的字符串,这种方法也是有效的,例如,带有圆括号的负数: "(12)" for -12.

同步

数字格式化通常是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。

另请参见:
DecimalFormat, ChoiceFormat, 序列化表格

嵌套类摘要
static classNumberFormat.Field
          在从 NumberFormat.formatToCharacterIterator 返回的 AttributedCharacterIterator 中定义用作属性键的常量,并将其作为 FieldPosition 中的字段标识符。
 
字段摘要
static intFRACTION_FIELD
          用于构造 FieldPosition 对象的字段常量。
static intINTEGER_FIELD
          用于构造 FieldPosition 对象的字段常量。
 
构造方法摘要
NumberFormat()
           
 
方法摘要
 Objectclone()
          重写 Cloneable
 booleanequals(Object obj)
          重写 equals
 Stringformat(double number)
          格式规范。
abstract  StringBufferformat(double number, StringBuffer toAppendTo, FieldPosition pos)
          格式规范。
 Stringformat(long number)
          格式规范。
abstract  StringBufferformat(long number, StringBuffer toAppendTo, FieldPosition pos)
          格式规范。
 StringBufferformat(Object number, StringBuffer toAppendTo, FieldPosition pos)
          格式化一个数并把所得文本追加到给定字符串缓冲区。
static Locale[]getAvailableLocales()
          返回所有语言环境的数组,此类的 get*Instance 方法可以为其返回本地化的实例。
 CurrencygetCurrency()
          获取格式化货币值时此数字格式使用的货币。
static NumberFormatgetCurrencyInstance()
          返回当前默认语言环境的货币格式。
static NumberFormatgetCurrencyInstance(Locale inLocale)
          返回指定语言环境的货币格式。
static NumberFormatgetInstance()
          返回当前默认语言环境的通用数字格式。
static NumberFormatgetInstance(Locale inLocale)
          返回指定语言环境的通用数字格式。
static NumberFormatgetIntegerInstance()
          返回当前默认语言环境的整数格式。
static NumberFormatgetIntegerInstance(Locale inLocale)
          返回指定语言环境的整数格式。
 intgetMaximumFractionDigits()
          返回数的小数部分允许的最大位数。
 intgetMaximumIntegerDigits()
          返回的数的整数部分允许的最大位数。
 intgetMinimumFractionDigits()
          返回数的小数部分允许的最小位数。
 intgetMinimumIntegerDigits()
          返回数的整数部分允许的最小位数。
static NumberFormatgetNumberInstance()
          返回当前默认语言环境的通用数字格式。
static NumberFormatgetNumberInstance(Locale inLocale)
          返回指定语言环境的通用数字格式。
static NumberFormatgetPercentInstance()
          返回当前默认语言环境的百分比格式。
static NumberFormatgetPercentInstance(Locale inLocale)
          返回指定语言环境的百分比格式。
 inthashCode()
          重写 hashCode
 booleanisGroupingUsed()
          如果此格式中使用了组,则返回 true。
 booleanisParseIntegerOnly()
          如果此格式仅将数作为整数分析,则返回 true。
 Numberparse(String source)
          从给定字符串的开始处的文本进行分析,生成一个数字。
abstract  Numberparse(String source, ParsePosition parsePosition)
          如果可能则返回 Long 型(例如,在 [Long.MIN_VALUE, Long.MAX_VALUE] 范围内且没有小数),否则返回 Double 型。
 ObjectparseObject(String source, ParsePosition pos)
          分析字符串中的文本,以生成一个 Number
 voidsetCurrency(Currency currency)
          获取格式化货币值时此数字格式使用的货币。
 voidsetGroupingUsed(boolean newValue)
          设置此格式中是否使用组。
 voidsetMaximumFractionDigits(int newValue)
          设置数的小数部分的最大位数。
 voidsetMaximumIntegerDigits(int newValue)
          设置数的整数部分允许的最大位数。
 voidsetMinimumFractionDigits(int newValue)
          设置数的小数部分允许的最小位数。
 voidsetMinimumIntegerDigits(int newValue)
          设置数的整数部分允许的最小位数。
 voidsetParseIntegerOnly(boolean value)
          设置数是否应该仅作为整数来分析。
 
从类 java.text.Format 继承的方法
format, formatToCharacterIterator, parseObject
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

INTEGER_FIELD

public static final int INTEGER_FIELD
用于构造 FieldPosition 对象的字段常量。表示必须返回格式化的数字的整数部分位置。

另请参见:
FieldPosition, 常量字段值

FRACTION_FIELD

public static final int FRACTION_FIELD
用于构造 FieldPosition 对象的字段常量。表示必须返回格式化的数字的小数部分位置。

另请参见:
FieldPosition, 常量字段值
构造方法详细信息

NumberFormat

public NumberFormat()
方法详细信息

format

public StringBuffer format(Object number,
                           StringBuffer toAppendTo,
                           FieldPosition pos)
格式化一个数并把所得文本追加到给定字符串缓冲区。该数可以是 Number 的任何子类。

对于能够被转换为 long 类型而不丢失信息的所有整型值,此实现使用 Number.longValue() 来提取其数值,包括 bit length 小于 64 的 BigInteger 值,以及使用 Number.doubleValue() 来提取所有其他类型的值。然后它调用 format(long,java.lang.StringBuffer,java.text.FieldPosition)format(double,java.lang.StringBuffer,java.text.FieldPosition)。这可能会导致数值信息和 BigIntegerBigDecimal 值的精度的丢失。

指定者:
Format 中的 format
参数:
number - 要格式化的数
toAppendTo - 字符串要被追加到的 StringBuffer
pos - 在输入时:如果需要,是一个对齐字段。在输出时:为对齐字段的偏移量。
返回:
作为 toAppendTo 被传递进来的值
抛出:
IllegalArgumentException - 如果 number 为 null 或不是 Number 的实例。
NullPointerException - 如果 toAppendTopos 为 null
另请参见:
FieldPosition

parseObject

public final Object parseObject(String source,
                                ParsePosition pos)
分析字符串中的文本,以生成一个 Number

此方法试图分析从 pos 给定的索引处开始的文本。如果分析成功,则将 pos 的索引更新为所分析的最后一字符后的索引(不必对直到字符串结尾的所有字符进行分析),并返回分析后的数。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,则 pos 的索引不改变,pos 的错误索引被设置为发生错误的字符的索引,并返回 null。

有关数字分析的更多信息,请参阅 parse(String, ParsePosition) 方法。

指定者:
Format 中的 parseObject
参数:
source - 应该分析其中一部分的 String
pos - 具有以上所述的索引和错误索引信息的 ParsePosition 对象。
返回:
从字符串进行分析的 Number。如果发生错误,则返回 null。
抛出:
NullPointerException - 如果 pos 为 null。

format

public final String format(double number)
格式规范。

另请参见:
Format.format(java.lang.Object)

format

public final String format(long number)
格式规范。

另请参见:
Format.format(java.lang.Object)

format

public abstract StringBuffer format(double number,
                                    StringBuffer toAppendTo,
                                    FieldPosition pos)
格式规范。

另请参见:
Format.format(java.lang.Object)

format

public abstract StringBuffer format(long number,
                                    StringBuffer toAppendTo,
                                    FieldPosition pos)
格式规范。

另请参见:
Format.format(java.lang.Object)