JAVA常用类之格式化

日期格式化

在之前的博客中我们使用到了操作日期的一些类,我们发现,如果我们想要获得指定格式的日期字符串可以做到但是很麻烦,下面为大家介绍几种日期的格式化方式。

java.text.DateFormat

DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
DateFormat提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM和SHORT。
DateFormat可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。
要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:
myString = DateFormat.getDateInstance().format(myDate);
如果格式化多个日期,那么获取该格式并多次使用它是更为高效的做法,这样系统就不必多次获取有关环境语言和国家/地区约定的信息了。

DateFormat df = DateFormat.getDateInstance();
for (int i = 0; i < myDate.length; ++i) {
   output.println(df.format(myDate[i]) + "; ");
}

要格式化不同语言环境的日期,可在getDateInstance()的调用中指定它。
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
还可使用DateFormat进行解析。
myDate = df.parse(myString);
使用getDateInstance来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。确切的结果取决于语言环境,但是通常:

  • SHORT 完全为数字,如 12.13.52 或 3:30pm
  • MEDIUM 较长,如 Jan 12, 1952
  • LONG 更长,如 January 12, 1952 或 3:30:32pm
  • FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST

如果愿意,还可以在格式上设置时区。如果想对格式化或解析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法所获取的 DateFormat 强制转换为 SimpleDateFormat。这适用于大多数国家/地区;只是要记住将其放入一个 try 代码块中,以防遇到特殊的格式。

构造方法
方法名说明
protected DateFormat()创建一个新的 DateFormat
方法摘要
返回值方法名说明
Objectclone()重写 Cloneable
booleanequals(Object obj)重写 equals
Stringformat(Date date)将一个 Date 格式化为日期/时间字符串
abstract StringBufferformat(Date date, StringBuffer toAppendTo, FieldPositionfieldPosition)
StringBufferformat(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)重写 Format
static Locale[]getAvailableLocales()返回所有语言环境的数组,此类的 get*Instance 方法可以为其返回已本地化的实例
CalendargetCalendar()获取与此日期/时间格式器关联的日历
staticDateFormat getDateInstance()获取日期格式器,该格式器具有默认语言环境的默认格式化风格
static DateFormatgetDateInstance(int style)获取日期格式器,该格式器具有默认语言环境的给定格式化风格
static DateFormatgetDateInstance(int style, Locale aLocale)获取日期格式器,该格式器具有给定语言环境的给定格式化风格
static DateFormatgetDateTimeInstance()获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格
static DateFormatgetDateTimeInstance(int dateStyle, int timeStyle)获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格
static DateFormatgetDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格
static DateFormatgetInstance()获取为日期和时间使用 SHORT 风格的默认日期/时间格式器
NumberFormatgetNumberFormat()获取此日期/时间格式器用于格式化和解析时间的数字格式器
static DateFormatgetTimeInstance()获取时间格式器,该格式器具有默认语言环境的默认格式化风格
static DateFormatgetTimeInstance(int style)获取时间格式器,该格式器具有默认语言环境的给定格式化风格
static DateFormatgetTimeInstance(int style, Locale aLocale)获取时间格式器,该格式器具有给定语言环境的给定格式化风格
TimeZonegetTimeZone()获取时区
inthashCode()重写 hashCode
booleanisLenient()判断日期/时间解析是否为不严格的
Dateparse(String source)从给定字符串的开始解析文本,以生成一个日期
abstract Dateparse(String source, ParsePosition pos)根据给定的解析位置开始解析日期/时间字符串
ObjectparseObject(String source, ParsePosition pos)解析字符串中的文本,以生成一个 Date
voidsetCalendar(Calendar newCalendar)设置此日期格式所使用的日历
voidsetLenient(boolean lenient)指定日期/时间解析是否不严格
voidsetNumberFormat(NumberFormat newNumberFormat)允许用户设置数字格式器
voidsetTimeZone(TimeZone zone)为此 DateFormat 对象的日历设置时区
使用示例
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;

public class DateFormatDemo
{
   public static void main(String[] args) throws ParseException
   {
      // 获取日期格式器,该格式器具有默认语言环境的默认格式化风格
      DateFormat dateFormat = DateFormat.getDateInstance();
      // 格式化当前时间
      System.out.println(dateFormat.format(new Date()));
      // 解析字符串为时间
      System.out.println(dateFormat.parse("2015-12-26"));
      // 获取时间格式器,该格式器具有默认语言环境的默认格式化风格。
      DateFormat timeFormat = DateFormat.getTimeInstance();
      // 格式化当前时间
      System.out.println(timeFormat.format(new Date()));
      // 解析字符串为时间
      System.out.println(timeFormat.parse("21:40:02"));
   }
}

运行结果(以实际为准):
2015-12-26
Sat Dec 26 00:00:00 CST 2015
21:49:37
Thu Jan 01 21:40:02 CST 1970
2015-12-26 21:49:37
Sat Dec 26 21:49:21 CST 2015

java.text.SimpleDateFormat

上面介绍的DateFormat是日期格式化中最基本的方式,我们在实际应用开发中,使用最多的是SimpleDateFormat,而非DateFormat,SimpleDateFormat更加便捷。
SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。可以根据需要使用 applyPattern 方法来修改格式模式。
日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (‘)引起来,以免进行解释。”””表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 都被保留):

字母日期或时间元素表示示例
GEra标志符Text
yYear1996;
M年中的月份MonthJuly; Jul; 07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific Standard Time; PST; GMT-08:00
Z时区RFC 822 time zone-0800
构造方法
方法名说明
SimpleDateFormat()用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)用给定的模式和日期符号构造 SimpleDateFormat
SimpleDateFormat(String pattern, Locale locale)用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat
方法摘要
返回值方法名说明
voidapplyLocalizedPattern(String pattern)将给定的本地化模式字符串应用于此日期格式
voidapplyPattern(String pattern)将给定模式字符串应用于此日期格式
Objectclone()创建此 SimpleDateFormat 的一个副本
booleanequals(Object obj)比较给定对象与此 SimpleDateFormat 的相等性
StringBufferformat(Date date, StringBuffer toAppendTo, FieldPosition pos)将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer
AttributedCharacterIteratorformatToCharacterIterator(Object obj)格式化生成 AttributedCharacterIterator 的对象
Dateget2DigitYearStart()返回在 100 年周期内被解释的两位数字年份的开始日期
DateFormatSymbolsgetDateFormatSymbols()获取此日期格式的日期和时间格式符号的一个副本
inthashCode()返回此 SimpleDateFormat 对象的哈希码值
Dateparse(String text, ParsePosition pos)解析字符串的文本,生成 Date
voidset2DigitYearStart(Date startDate)设置 100 年周期的两位数年份,该年份将被解释为从用户指定的日期开始
voidsetDateFormatSymbols(DateFormatSymbols newFormatSymbols)设置此日期格式的日期和时间格式符号
StringtoLocalizedPattern()返回描述此日期格式的本地化模式字符串
StringtoPattern()返回描述此日期格式的模式字符串
使用示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo
{
   public static void main(String[] args) throws ParseException
   {
      // 获得当前时间
      Date now = new Date();
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      // 格式化当前时间
      System.out.println(dateFormat.format(now));
      // 解析
      System.out.println(dateFormat.parse("2015-12-26 22:04:55"));
   }
}

运行结果(以实际为准):
2015-12-26 22:04:55
Sat Dec 26 22:04:55 CST 2015

数值格式化

java.text.NumberFormat

NumberFormat是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。
NumberFormat可用于格式化和解析任何语言环境的数值。使代码能够完全独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关。

构造方法
方法名说明
protected 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)返回指定语言环境的百分比格式
RoundingModegetRoundingMode()获取在此 NumberFormat 中使用的 RoundingMode
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)设置数是否应该仅作为整数进行解析
voidsetRoundingMode(RoundingMode roundingMode)设置在此 NumberFormat 中使用的 RoundingMode
使用示例
import java.text.NumberFormat;
import java.text.ParseException;

public class NumberFormatDemo
{
   public static void main(String[] args) throws ParseException
   {
      double d = 0.51234;
      // 当前默认语言环境的货币格式
      NumberFormat currency = NumberFormat.getCurrencyInstance();
      System.out.println(currency.format(d));
      // 当前默认语言环境的整数格式
      NumberFormat integer = NumberFormat.getIntegerInstance();
      System.out.println(integer.format(d));
      // 当前默认语言环境的通用数值格式
      NumberFormat number = NumberFormat.getNumberInstance();
      System.out.println(number.format(d));
      // 当前默认语言环境的百分比格式
      NumberFormat percent = NumberFormat.getPercentInstance();
      System.out.println(percent.format(d));
   }
}

运行结果:
¥0.51
1
0.512
51%

java.text.DecimalFormat

DecimalFormat与NumberFormat的关系就好像SimpleDateFormat与DateFormat之间的关系。
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。

  • 特殊模式字符
    模式中的很多字符都是按字面解释的;在解析期间对其进行匹配,在格式化期间则不经改变地输出。另一方面,特殊字符代表了其他字符、字符串或字符类。如果要将其作为字面量出现在前缀或后缀中,那么除非另行说明,否则必须对其加引号。
    下列字符用在非本地化的模式中。已本地化的模式使用从此格式器的 DecimalFormatSymbols 对象中获得的相应字符,这些字符已失去其特殊状态。两种例外是货币符号和引号,不将其本地化。
符号位置本地化?含义
0数字阿拉伯数字
#数字阿拉伯数字,如果不存在则显示为 0
.数字小数分隔符或货币小数分隔符
-数字减号
,数字分组分隔符
E数字分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号
;子模式边界分隔正数和负数子模式
%前缀或后缀乘以 100 并显示为百分数
\u2030前缀或后缀乘以 1000 并显示为千分数
¤ (\u00A4)前缀或后缀货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符
前缀或后缀用于在前缀或或后缀中为特殊字符加引号,例如 “’#’#” 将 123 格式化为 “#123”。要创建单引号本身,请连续使用两个单引号:”# o”clock”
  • 科学计数法
    科学计数法中的数表示为一个尾数和一个 10 的几次幂的乘积,例如可将 1234 表示为 1.234 x 10^3。尾数的范围通常是 1.0 <= x < 10.0,但并非必需如此。可指示 DecimalFormat 仅通过某个模式 来格式化和解析科学计数法表示的数;目前没有创建科学计数法格式的工厂方法。在这个模式中,指数字符后面紧跟着一个或多个数字字符即指示科学计数法。示例:”0.###E0” 将数字 1234 格式化为 “1.234E3”。
    • 指数字符后面的数字位数字符数给出了最小的指数位数。没有最大值。使用本地化的减号来格式化负数指数,不 使用模式中的前缀和后缀。这就允许存在诸如 “0.###E0 m/s” 等此类的模式。
    • 最小和最大整数数字位数一起进行解释:
      如果最大整数数字位数大于其最小整数数字位数并且大于 1,则强制要求指数为最大整数数字位数的倍数,并将最小整数数字位数解释为 1。最常见的用法是生成工程计数法,其中指数是 3 的倍数,如 “##0.#####E0”。使用此模式时,数 12345 格式化为 “12.345E3”,123456 则格式化为 “123.456E3”。
      否则通过调整指数来得到最小整数数字位数。示例:使用 “00.###E0” 格式化 0.00123 时得到 “12.3E-4”。
    • 尾数中的有效位数是最小整数 和最大小数 位数的和,不受最大整数位数的影响。例如,使用 “##0.##E0” 格式化 12345 得到 “12.3E3”。要显示所有位数,请将有效位数计数设置为零。有效位数不会影响解析。
    • 数模式可能不包含分组分隔符。
  • 舍入
    DecimalFormat 提供 RoundingMode 中定义的舍入模式进行格式化。默认情况下,它使用 RoundingMode.HALF_EVEN。
  • 阿拉伯数字
    为了进行格式化,DecimalFormat 使用 DecimalFormatSymbols 对象中所定义的、从已本地化的阿拉伯数字 0 开始的 10 个连续字符作为阿拉伯数字。为了进行解析,可识别 Character.digit 所定义的这些阿拉伯数字和所有 Unicode 十进制阿拉伯数字。
  • 特殊值
    NaN 被格式化为一个字符串,通常具有单个字符 \uFFFD。此字符串由 DecimalFormatSymbols 对象所确定。这是唯一不使用前缀和后缀的值。
    无穷大的值被格式化为一个字符串,通常具有单个字符 \u221E,具有正数或负数前缀和后缀。无穷大值的字符串由 DecimalFormatSymbols 对象所确定。
    将负零(”-0”)解析为:
    • 如果 isParseBigDecimal() 为 true,则为 BigDecimal(0),
    • 如果 isParseBigDecimal() 为 false 并且 isParseIntegerOnly() 为 true,则为 Long(0),
    • 如果 isParseBigDecimal() 和 isParseIntegerOnly() 均为 false,则为 Double(-0.0)。
构造方法
方法名说明
DecimalFormat()使用默认模式和默认语言环境的符号创建一个 DecimalFormat
DecimalFormat(String pattern)使用给定的模式和默认语言环境的符号创建一个 DecimalFormat
DecimalFormat(String pattern, DecimalFormatSymbols symbols)使用给定的模式和符号创建一个 DecimalFormat。
方法摘要
返回值方法名说明
voidapplyLocalizedPattern(String pattern)将给定的模式应用于此 Format 对象
voidapplyPattern(String pattern)将给定的模式应用于此 Format 对象
Objectclone()标准重写;没有语义上的变化
booleanequals(Object obj)重写 equals
StringBufferformat(double number, StringBuffer result, FieldPosition fieldPosition)格式化一个 double 值,以生成一个字符串
StringBufferformat(long number, StringBuffer result, FieldPosition fieldPosition)格式化一个 long 值,以生成一个字符串
StringBufferformat(Object number, StringBuffer toAppendTo, FieldPosition pos)格式化一个数,并将所得文本追加到给定的字符串缓冲区
AttributedCharacterIteratorformatToCharacterIterator(Object obj)格式化一个 Object,以生成一个 AttributedCharacterIterator
CurrencygetCurrency()获取格式化货币值时,此十进制格式使用的货币
DecimalFormatSymbolsgetDecimalFormatSymbols()返回小数格式符号的一个副本,通常程序员或用户不改变此副本
intgetGroupingSize()返回分组大小
intgetMaximumFractionDigits()获取某个数的小数部分中所允许的最大数字位数
intgetMaximumIntegerDigits()获取某个数的整数部分中所允许的最大数字位数
intgetMinimumFractionDigits()获取某个数的小数部分中所允许的最小数字位数
intgetMinimumIntegerDigits()获取某个数的整数部分中所允许的最小数字位数
intgetMultiplier()获取百分数、千分数和类似格式中使用的乘数
StringgetNegativePrefix()获取负数前缀
StringgetNegativeSuffix()获取负数后缀
StringgetPositivePrefix()获取正数前缀
StringgetPositiveSuffix()获取正数后缀
RoundingModegetRoundingMode()获取在此 DecimalFormat 中使用的 RoundingMode
inthashCode()重写 hashCode
booleanisDecimalSeparatorAlwaysShown()允许获取整数中小数分隔符的行为
booleanisParseBigDecimal()返回 parse(java.lang.String, java.text.ParsePosition) 方法是否返回 BigDecimal
Numberparse(String text, ParsePosition pos)解析字符串中的文本,以生成一个 Number
voidsetCurrency(Currency currency)设置格式化货币值时,此数字格式使用的货币
voidsetDecimalFormatSymbols(DecimalFormatSymbols newSymbols)设置小数格式符号,通常程序员或用户不改变此符号
voidsetDecimalSeparatorAlwaysShown(boolean newValue)允许设置整数中小数分隔符的行为
voidsetGroupingSize(int newValue)设置分组大小
voidsetMaximumFractionDigits(int newValue)设置某个数的小数部分中所允许的最大数字位数
voidsetMaximumIntegerDigits(int newValue)设置某个数字的整数部分中所允许的最大数字位数
voidsetMinimumFractionDigits(int newValue)设置某个数的小数部分中所允许的最小数字位数
voidsetMinimumIntegerDigits(int newValue)设置某个数字的整数部分中所允许的最小数字位数
voidsetMultiplier(int newValue)设置百分数、千分数和类似格式中使用的乘数
voidsetNegativePrefix(String newValue)设置负数前缀
voidsetNegativeSuffix(String newValue)设置负数后缀
voidsetParseBigDecimal(boolean newValue)设置 parse(java.lang.String, java.text.ParsePosition) 方法是否返回 BigDecimal
voidsetPositivePrefix(String newValue)设置正数前缀
voidsetPositiveSuffix(String newValue)设置正数后缀
voidsetRoundingMode(RoundingMode roundingMode)设置在此 DecimalFormat 中使用的 RoundingMode
StringtoLocalizedPattern()合成一个表示此 Format 对象当前状态的、已本地化的模式字符串
StringtoPattern()合成一个表示此 Format 对象当前状态的模式字符串
使用示例
import java.text.DecimalFormat;
import java.text.ParseException;

public class DecimalFormatDemo
{
   public static void main(String[] args) throws ParseException
   {
      double d = 0.51;
      DecimalFormat format1 = new DecimalFormat("00.000");
      System.out.println(format1.format(d));
      DecimalFormat format2 = new DecimalFormat("#0.000");
      System.out.println(format2.format(d));
      DecimalFormat format3 = new DecimalFormat("0.###");
      System.out.println(format3.format(d));
   }
}

运行结果:
00.510
0.510
0.51

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值