java如何控制输出数字的格式

本文介绍Java中使用NumberFormat和DecimalFormat进行数字格式化的多种方法,包括根据地区习惯、科学计数法、百分比等格式化,并展示了如何解析已格式化的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
java.text包中提供了这样的功能。下面首先看一个比较简单的例子:

对于数字的格式化的几个常用的类:

NumberFormat

DecimalFormat

 

import java.text.*

import java.util.Locale; 

  
public class FormatTest 

 
public static void main(String[] args) 

    NumberFormatnf
=NumberFormat.getInstance(Locale.CHINA); 

   NumberFormat nf1
=NumberFormat.getInstance(Locale.GERMAN); 

   System.out.println(nf.format(
1245.6)); 

   System.out.println(nf1.format(
1245.6)); 
  }
 

 }
 

 

结果为1,245.6

         1.245,6

通过上面的方法可以将数字根据不同的地区习惯格式化成不同格式,来符合各个不同习惯。

 

上面是对针对国际化时的数字格式化,下面的例子是控制小数点显示的例子:

结果为

import java.text.*

import java.util.Locale; 

 
public class FormatTest 

 
public static void main(String[] args) 

    DecimalFormat df1
=newDecimalFormat("####.0000"); 

   System.out.println(df1.format(
12.32)); 

   Locale.setDefault(Locale.GERMAN); 

   DecimalFormat df
=new DecimalFormat("0000.0000"); 

   System.out.println(df.format(
12.32)); 
  }
 
}
 

 

       12.3200

       00123200

 

 

如果我想用科学记数法的格式来输出数字该怎么办呢??看下面的例子:

 

import java.text.*

import java.util.Locale; 

  
public class FormatTest 

 
public static void main(String[] args) 

    DecimalFormat df
=new DecimalFormat("0.00E0000"); 

   System.out.print(df.format(
125487.326558)); 

   }
 
}
 

 

结果为

       1.25E0005

 

如何表示百分数呢?请参考下面的代码:

 

import java.text.*

import java.util.Locale; 

  
public class FormatTest 

 
public static void main(String[] args) 

    NumberFormatnf
=NumberFormat.getPercentInstance(); 

   System.out.println(nf.format(
0.25)); 

   NumberFormat nf2
=NumberFormat.getPercentInstance(Locale.GERMAN); 

   System.out.println(nf2.format(
0.25)); 

  }
 
}
 

 

结果为

       25

       25

 

以上逐个介绍了几种不同的数字格式化方法。似乎应该谈谈如何解析已经被格式化的数字了。我们仍然模仿上面的方法举一个简单的例子:

由于被格式化后的数字都是字符型的,所以注意解析函数parse里的参数是String,但是解析后成为Number

 

import java.text.*

import java.util.Locale; 

  
public class FormatTest 

 
public static void main(String[] args) 

   NumberFormat nf
=NumberFormat.getInstance();//获得默认的格式 

   NumberFormat nf2
=NumberFormat.getInstance(Locale.GERMAN);//获得德国格式 

   
try
     System.out.println( nf.parse(
"1254.25")); 

     System.out.println(nf2.parse(
"1245,24")); 

   }
catch(Exception e)

     e.printStackTrace(); 

    }
 

  }
 
}

 

结果为

       1254.25

1245.24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值