DecimalFormat 类

定义

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

[Android.Runtime.Register("java/text/DecimalFormat", DoNotGenerateAcw=true)]
public class DecimalFormat : Java.Text.NumberFormat
[<Android.Runtime.Register("java/text/DecimalFormat", DoNotGenerateAcw=true)>]
type DecimalFormat = class
    inherit NumberFormat
继承
属性

注解

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat 。 它具有各种功能,旨在使任何区域设置中的数字分析和设置格式,包括对西方、阿拉伯语和索引数字的支持。 它还支持不同类型的数字,包括整数(123)、固定点数(123.4)、科学表示法(1.23E4)、百分比(12%)和货币金额(123美元)。 所有这些都可以本地化。

若要获取特定区域设置( NumberFormat 包括默认区域设置),请调用一个 NumberFormat工厂方法,例如 getInstance()。 一般情况下,不要直接调用 DecimalFormat 构造函数,因为 NumberFormat 工厂方法可能返回除其他子类以外的 DecimalFormat子类。 如果需要自定义格式对象,请执行以下操作:

<blockquote>

NumberFormat f = NumberFormat.getInstance(loc);
            if (f instanceof DecimalFormat) {
                ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
            }

</blockquote>

DecimalFormat em>pattern</em> 和一组 <em>symbols</em> 组成<。 模式可以直接使用 applyPattern(),或者间接使用 API 方法进行设置。 符号存储在对象 DecimalFormatSymbols 中。 使用 NumberFormat 工厂方法时,模式和符号是从本地化 ResourceBundle的 s 读取的。

<h2>模式</h2>

DecimalFormat 模式具有以下语法: <blockquote>

<i>Pattern:</i>
<i>PositivePattern</i>
<i>PositivePattern</i> ; <i>NegativePattern</i>
<i>PositivePattern:</i>
<i>Prefix<sub>opt</sub></i> <i>Number</i> <i>Suffix<sub>opt</sub></i>
<i>NegativePattern:</i>
<i>Prefix<sub>opt</sub></i> <i>Number</i> <i>Suffix<sub>opt</sub></i>
<i>Prefix:</i>
                    any Unicode characters except &#92;uFFFE, &#92;uFFFF, and special characters
<i>Suffix:</i>
                    any Unicode characters except &#92;uFFFE, &#92;uFFFF, and special characters
<i>Number:</i>
<i>Integer</i> <i>Exponent<sub>opt</sub></i>
<i>Integer</i> . <i>Fraction</i> <i>Exponent<sub>opt</sub></i>
<i>Integer:</i>
<i>MinimumInteger</i>
                    #
                    # <i>Integer</i>
                    # , <i>Integer</i>
<i>MinimumInteger:</i>
                    0
                    0 <i>MinimumInteger</i>
                    0 , <i>MinimumInteger</i>
<i>Fraction:</i>
<i>MinimumFraction<sub>opt</sub></i> <i>OptionalFraction<sub>opt</sub></i>
<i>MinimumFraction:</i>
                    0 <i>MinimumFraction<sub>opt</sub></i>
<i>OptionalFraction:</i>
                    # <i>OptionalFraction<sub>opt</sub></i>
<i>Exponent:</i>
                    E <i>MinimumExponent</i>
<i>MinimumExponent:</i>
                    0 <i>MinimumExponent<sub>opt</sub></i>

</blockquote>

模式 DecimalFormat 包含正和负子模式,例如 "#,##0.00;(#,##0.00)"。 每个子模式都有一个前缀、数字部分和后缀。 负子模式是可选的;如果不存在,则以减号 ('-' U+002D HYPHEN-MINUS) 为前缀的正子模式用作负子模式。 也就是说, "0.00" 单独相当于 "0.00;-0.00"。 如果存在显式负子模式,则它只用于指定负前缀和后缀;数字数、最小数字和其他特征都与正模式相同。 这意味着生成 "#,##0.0#;(#)" 的行为与 "#,##0.0#;(#,##0.0#)".

用于无穷大、数字、分组分隔符、小数分隔符等的各种符号的前缀、后缀和各种符号可以设置为任意值,格式设置期间它们将正确显示。 但是,必须注意符号和字符串不冲突,或者分析将不可靠。 例如,正前缀和负前缀或后缀必须不同,才能 DecimalFormat.parse() 区分正值和负值。 (如果它们相同,则 DecimalFormat 行为将如同未指定负子模式一样。另一个示例是,小数分隔符和分组分隔符应为非重复字符,或者分析是不可能的。

分组分隔符通常用于数千个,但在一些国家,它分隔了数万个。 分组大小是分组字符之间的常量位数,例如 100,000,000 或 4(对于 1,0000,000,000)。 如果提供具有多个分组字符的模式,则最后一个和整数末尾之间的间隔是使用的。 所以"#,##,###,####" == == "######,####""##,####,####"

<h3>“special_pattern_character”>特殊模式字符</h3>

模式中的许多字符是字面上采用的;在解析期间匹配它们,并在格式设置期间输出不变。 另一方面,特殊字符代表其他字符、字符串或字符类。 除非另有说明,否则必须引用它们作为文本出现在前缀或后缀中。

此处列出的字符用于非本地化模式。 本地化模式改用从此格式化程序的对象中获取的 DecimalFormatSymbols 相应字符,并且这些字符会丢失其特殊状态。 两个例外是未本地化的货币符号和报价。

<blockquote><table class=“striped”><caption style=“display:none”>Chart 显示符号、位置、本地化和含义。</caption><thead><tr><th scope=“col” style=“text-align:left”>Symbol <th scope=“col” style=“text-align:left”>Location <th scope=“col” style=“text-align:left”>Localized? <th scope=“col” style=“text-align:left”>Meaning </thead><tbody><tr style=“vertical-align:top”><th scope=“row”><0td Number <td>>Yes <td>Digit <tr style=“vertical-align: top”><th scope=“row”><#td>Number <td>Yes <td Digit, zero shows as absent <tr style=“vertical-align:top”th scope=“><row”>.<td>Number <td>>是 <td>Decimal 分隔符或货币小数分隔符 tr style=“vertical-align: top”><th scope=“row”><-td>Number <td>是 <td>减号 <tr style=“vertical-align:top”><th scope=“row”><,td>Number td td Number <td>Yes <td>Grouping separator <or monetary Grouping separator <tr style=“vertical-align: top”<>th scope=“row”E><td>数字 <td>是 <td>分隔 mantissa 和指数在科学表示法。 <em>不需要在前缀或后缀中带引号。</em>tr style=“vertical-align:top”><th scope=“row”><;td Subpattern boundary <td>Yes <td>>Separates positive and negative subpatterns <tr style=“vertical-align: top&#92;u2030><>><”><th scope=“row”>%<td Prefix or suffix <><td td <>><><是 <td>乘以 1000,并按米值 <tr style=“vertical-align: top”><th scope=“row”&#164;> (&#92;u00A4) <td>前缀或后缀 <td>No <td>Currency 符号,替换为货币符号。 如果翻了一番,则替换为国际货币符号。 如果模式中存在,则使用货币十进制/分组分隔符,而不是十进制/分组分隔符。 <tr style=“vertical-align:top”><th scope=“row”><'td Prefix or suffix <td td>>No <td>Used to quote special characters in a prefix or suffix, for example, "'#'#" formats 123 to"#123". 若要创建单引号本身,请在一行中使用两个: "# o''clock" </tbody></table></blockquote>

<h3>科学表示法</h3>

科学表示法中的数字表示为 mantissa 的乘积,幂为 1234,可以表示为 1.234 x 10^3。 mantissa 经常在 1.0 和 le 范围内x < 10.0,但它不需要。 DecimalFormat可以指示只能通过模式</em> 格式化和分析科学表示法 <em>;目前没有创建科学表示法格式的工厂方法。 在模式中,指数字符紧跟一个或多个数字字符表示科学表示法。 示例: "0.###E0" 将数字 1234 的格式设置为 "1.234E3".

<ul><li>指数字符后面的数字字符数提供最小指数数字计数。 没有最大值。 负指数是使用本地化减号格式化的, <em>not</em> 前缀和后缀从模式。 这允许模式,如 "0.###E0 m/s".

<li>将整数位数的最小值和最大数解释在一起:

<ul><li>如果整数位数的最大数目大于其最小数字和大于 1,则强制指数为最大整数位数的倍数,并将最小整数位数解释为 1。 最常见的用途是生成 <em 工程表示法</em>,其中指数是三个的倍数,例如"##0.#####E0">。 使用此模式,数字 12345 格式以及"12.345E3"123456格式。"123.456E3"

<li>否则,通过调整指数来实现最小整数位数。 示例:采用 "00.###E0" 生成 "12.3E-4"格式的 0.00123 。 </ul>

<li>mantissa 中的有效数字数是 em>最小整数</em> 和 em>最大分数</em> 数字的总<和<,不受最大整数位数影响。 例如,格式化为 "##0.##E0" 12345。"12.3E3" 若要显示所有数字,请将有效数字计数设置为零。 有效位数不会影响分析。

<li>指数模式可能不包含分组分隔符。 </ul>

<h3>Rounding</h3>

DecimalFormat 提供用于格式设置的 java.math.RoundingMode 舍入模式。 默认情况下,它使用 java.math.RoundingMode#HALF_EVEN RoundingMode.HALF_EVEN

<h3>Digits</h3>

对于格式设置, DecimalFormat 请使用从对象中 DecimalFormatSymbols 定义为数字的本地化零位开始的十个连续字符。 为了进行分析,可以识别这些数字以及所有 Unicode 十进制数字,如定义 Character#digit Character.digit的那样。

<h4>特殊值</h4>

NaN 格式为字符串,通常具有单个字符 &#92;uFFFD。 此字符串由 DecimalFormatSymbols 对象确定。 这是不使用前缀和后缀的唯一值。

无穷大的格式设置为字符串,该字符串通常具有单个字符 &#92;u221E,并应用了正前缀或负前缀和后缀。 无穷大字符串由 DecimalFormatSymbols 对象确定。

负零("-0") 解析为 <ul<>liBigDecimal(0)> 如果isParseBigDecimal()为 true,li <Long(0)>如果isParseBigDecimal()为 false,则isParseIntegerOnly()为 true,li <Double(-0.0)>如果同时isParseBigDecimal()为 false, isParseIntegerOnly() 则为 false。 </ul>

<h3>“synchronization”>Synchronization</h3>

小数格式通常不会同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问格式,则必须在外部同步。

<h3>示例</h3>

<blockquote>

<strong>{@code
            // Print out a number using the localized number, integer, currency,
            // and percent format for each locale}</strong>{@code
            Locale[] locales = NumberFormat.getAvailableLocales();
            double myNumber = -1234.56;
            NumberFormat form;
            for (int j = 0; j < 4; ++j) {
                System.out.println("FORMAT");
                for (int i = 0; i < locales.length; ++i) {
                    if (locales[i].getCountry().length() == 0) {
                       continue; // Skip language-only locales
                    }
                    System.out.print(locales[i].getDisplayName());
                    switch (j) {
                    case 0:
                        form = NumberFormat.getInstance(locales[i]); break;
                    case 1:
                        form = NumberFormat.getIntegerInstance(locales[i]); break;
                    case 2:
                        form = NumberFormat.getCurrencyInstance(locales[i]); break;
                    default:
                        form = NumberFormat.getPercentInstance(locales[i]); break;
                    }
                    if (form instanceof DecimalFormat) {
                        System.out.print(": " + ((DecimalFormat) form).toPattern());
                    }
                    System.out.print(" -> " + form.format(myNumber));
                    try {
                        System.out.println(" -> " + form.parse(form.format(myNumber)));
                    } catch (ParseException e) {}
                }
            }
            }

</blockquote>

在 1.1 中添加。

Java文档java.text.DecimalFormat

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
DecimalFormat()

使用默认区域设置的默认模式和符号 java.util.Locale.Category#FORMAT FORMAT 创建 DecimalFormat。

DecimalFormat(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

DecimalFormat(String, DecimalFormatSymbols)

使用给定的模式和符号创建 DecimalFormat。

DecimalFormat(String)

使用给定模式和默认 java.util.Locale.Category#FORMAT FORMAT 区域设置的符号创建 DecimalFormat。

字段

名称 说明
FractionField

用于构造 FieldPosition 对象的字段常量。

(继承自 NumberFormat)
IntegerField

用于构造 FieldPosition 对象的字段常量。

(继承自 NumberFormat)

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
Currency

获取格式设置货币值时此数字格式使用的货币。 - 或 - 设置格式设置货币值格式时此数字格式使用的货币。

(继承自 NumberFormat)
DecimalFormatSymbols

返回十进制格式符号的副本,通常不会由程序员或用户更改。 - 或 - 设置十进制格式符号,通常不会由程序员或用户更改。

DecimalSeparatorAlwaysShown

允许使用整数获取小数分隔符的行为。 - 或 - 允许使用整数设置小数分隔符的行为。

GroupingSize

返回分组大小。 - 或 - 设置分组大小。

GroupingUsed

如果采用此格式使用分组,则返回 true。 - 或 - 设置是否将使用此格式的分组。

(继承自 NumberFormat)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
JniPeerMembers

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

MaximumFractionDigits

返回数字的分数部分允许的最大位数。 - 或 - 设置数字的分数部分允许的最大位数。

(继承自 NumberFormat)
MaximumIntegerDigits

返回数字整数部分中允许的最大位数。 - 或 - 设置数字整数部分中允许的最大位数。

(继承自 NumberFormat)
MinimumFractionDigits

返回数字的分数部分允许的最小位数。 - 或 - 设置数字的分数部分允许的最小位数。

(继承自 NumberFormat)
MinimumIntegerDigits

返回数字整数部分中允许的最小位数。 - 或 - 设置数字整数部分中允许的最小位数。

(继承自 NumberFormat)
Multiplier

获取用于百分比、每毫米和类似格式的乘数。 - 或 - 设置用于百分比、每毫米和类似格式的乘数。

NegativePrefix

获取负前缀。 -或 - 设置负前缀。

NegativeSuffix

获取负后缀。 - 或 - 设置负后缀。

ParseBigDecimal

返回方法是否 #parse(java.lang.String, java.text.ParsePosition) 返回 BigDecimal。 - 或 - 设置方法是否 #parse(java.lang.String, java.text.ParsePosition) 返回 BigDecimal

ParseIntegerOnly

如果此格式将仅将数字分析为整数,则返回 true。 - 或 - 设置是否只应将数字分析为整数。

(继承自 NumberFormat)
PeerReference

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
PositivePrefix

获取正前缀。 - 或 - 设置正前缀。

PositiveSuffix

获取正后缀。 - 或 - 设置正后缀。

RoundingMode

java.math.RoundingMode获取此 NumberFormat 中使用的值。 - 或 - 设置 java.math.RoundingMode 此 NumberFormat 中使用的值。

(继承自 NumberFormat)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

方法

名称 说明
ApplyLocalizedPattern(String)

将给定模式应用于此 Format 对象。

ApplyPattern(String)

将给定模式应用于此 Format 对象。

Clone()

创建并返回此对象的副本。

(继承自 _Format)
Dispose()

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
Dispose(Boolean)

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
Format(Double, StringBuffer, FieldPosition)

设置双精度格式以生成字符串。

Format(Double)

格式的专用化。

(继承自 NumberFormat)
Format(Int64, StringBuffer, FieldPosition)

设置长格式以生成字符串。

Format(Int64)

格式的专用化。

(继承自 NumberFormat)
Format(Object, StringBuffer, FieldPosition)

设置数字的格式,并将生成的文本追加到给定的字符串缓冲区。

Format(Object)

设置对象的格式以生成字符串。

(继承自 _Format)
FormatToCharacterIterator(Object)

设置生成 . 的对象 AttributedCharacterIterator的格式。

(继承自 _Format)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Parse(String, ParsePosition)

分析字符串中的文本以生成一个 Number

Parse(String)

分析给定字符串开头的文本以生成数字。

(继承自 NumberFormat)
ParseObject(String, ParsePosition)

分析字符串中的文本以生成一个 Number

(继承自 NumberFormat)
ParseObject(String)

分析给定字符串开头的文本以生成对象。

(继承自 _Format)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
ToLocalizedPattern()

合成表示此 Format 对象的当前状态的本地化模式字符串。

ToPattern()

合成表示此 Format 对象的当前状态的模式字符串。

ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
IJavaPeerable.Finalized()

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
IJavaPeerable.JniManagedPeerState

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

DecimalFormat 是格式化十进制数字的具体子类 NumberFormat

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于