java格式化输出float_【译】Java8官⽅教程:格式化输出数值
类型
格式化输出数值类型
前⾯介绍了如何使⽤print和println⽅法将字符串打印到标准输出(System.out)。由于所有数字都可以转换为字符串(您将在本课的后⾯看到),所以可以使⽤这些⽅法打印出字符串和数字的任意组合。但是,Java编程语⾔还有其他⽅法,可以在包含数字时对打印输出进⾏更多的控制。
printf和format⽅法
java.io包包含⼀个PrintStream类,它有两种格式化⽅法(format、printf),可以⽤来替换print和println,这两个⽅法作⽤等效。你使⽤过的System.out恰好是⼀个PrintStream对象,所以你可以通过System.out调⽤PrintStream的⽅法。因此,您可以在以前使⽤print或println的任意位置使⽤format或printf。
对于java.io.PrintStream的⽅法:
public PrintStream format(String format, args)
复制代码
其中format是指定要使⽤的格式的字符串,args是使⽤该格式打印的变量列表。⼀个例⼦:
System.out.format("The value of " + "the float variable is " +
"%f, while the value of the " + "integer variable is %d, " +
"and the string is %s", floatVar, intVar, stringVar)
bigdecimal格式化两位小数复制代码
第⼀个参数format是⼀个格式字符串,它指定如何格式化第⼆个参数args中的对象。格式字符串包含纯⽂本和格式说明符(格式化参数的特殊字符)。
< args称为可变长变量,表明参数的个数是不固定的
格式说明符以百分号(%)开始,以转换器结束。转换器是⼀个字符,指⽰要格式化的参数的类型。在百分号(%)和转换器之间可以有可选的标志和描述符。有许多转换器、标志和描述符,它们都在java.util.Formatter中有说明。
下⾯是⼀个基本的例⼦:
int i = 461012;
System.out.format("The value of i is: %d%n", i);
复制代码
%d指定⼗进制整数变量,%n是⼀个独⽴于平台的换⾏符,输出是:
The value of i is: 461012
复制代码
printf和format⽅法被重载。都有⼀个具有以下语法的版本:
public PrintStream format(Locale l, String format, args)
复制代码
例如,要在法语系统中打印数字(在浮点数表⽰中使⽤逗号代替⼩数点),可以使⽤
System.out.format(Locale.FRANCE,
"The value of the float " + "variable is %f, while the " +
import java.util.Calendar;
import java.util.Locale;
public class TestFormat {
public static void main(String[] args) {
long n = 461012;
System.out.format("%d%n", n); // --> "461012"
System.out.format("%tB %te, %tY%n", c, c, c); // --> "May 29, 2006"
System.out.format("%tl:%tM %tp%n", c, c, c); // --> "2:34 am"
System.out.format("%tD%n", c); // --> "05/29/06"
}
}
复制代码
DecimalFormat类
您可以使⽤DecimalFormat类来控制前置和后置零、前缀和后缀、分组(千)分隔符和⼩数分隔符的显⽰。DecimalFormat在数字格式化⽅⾯提供了很⼤的灵活性,但是它会使代码更加复杂
下⾯的例⼦中通过将格式字符串传递给DecimalFormat构造函数,创建了⼀个DecimalFormat对象myFormatter。format()⽅法是从NumberFormat继承⽽来,由myformatter调⽤——它接受double类型的值作为参数并返回格式化后的字符串。
译者注:这个类和BigDecimal没有半点关系 ,他们都不在⼀个包内
下⾯是⼀个⽰例程序,演⽰DecimalFormat的使⽤:
*;
public class DecimalFormatDemo {
static public void customFormat(String pattern, double value ) {
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
}
static public void main(String[] args) {
customFormat("###,###.###", 123456.789);
customFormat("###.##", 123456.789);
customFormat("000000.000", 123.78);
customFormat("$###,###.###", 12345.67);
}
}
复制代码
输出为:
123456.789 ###,###.### 123,456.789
123456.789 ###.## 123456.79
123.78 000000.000 000123.780
12345.67 $###,###.### $12,345.67
复制代码
下表解释了每⼀⾏输出:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论