您的位置:首页 > 编程语言 > Java开发

java输出精度控制

2013-07-15 17:19 204 查看
double sqr = 1.23456789;

假如只要输出小数点后五位小树怎么处理

C语言有printf通过格式控制来处理

java

System.out.printf有类似于C语言的格式控制

public PrintStream printf(String format,
Object... args)


产生格式化输出的每个方法都需要格式字符串 和参数列表。格式字符串是一个
String
,它可以包含固定文本以及一个或多个嵌入的格式说明符。请考虑以下示例:

Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);


此格式字符串是 format 方法的第一个参数。它包含三个格式说明符 "%1$tm"、"%1$te" 和 "%1$tY",它们指出应该如何处理参数以及在文本的什么地方插入它们。格式字符串的其余部分是包括
"Dukes Birthday: " 和其他任何空格或标点符号的固定文本。 参数列表由传递给位于格式字符串之后的方法的所有参数组成。在上述示例中,参数列表的大小为 1,由对象
Calendar
c 组成。

常规类型、字符类型和数值类型的格式说明符的语法如下:

%[argument_index$][flags][width][.precision]conversion


可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

可选 flags 是修改输出格式的字符集。有效标志集取决于转换类型。

可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。

可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。

所需 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。

format(String format,
Object... args)


使用指定的格式字符串和参数返回一个格式化字符串。
3. 使用 DecimalFormat 对象格式化
DecimalFormat format = new DecimalFormat("#.00");
System.out.println(format.format(data));

以下内容转载:


DecimalFormat的用法 Java小数(float、dobule)格式化



作者:谢周兵 2011-10-17
20:05 回复楼主

DecimalFormat的用法 Java 浮点数 Float Double 小数 格式化 保留小数位后几位等

1 DecimalFormat df = new DecimalFormat();

2 double data = 1234.56789;

3 System.out.println("格式化之前的数字: " + data);

4 String style = "0.0";//定义要显示的数字的格式

5 df.applyPattern(style);// 将格式应用于格式化器

6 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

7 style = "00000.000 kg";//在格式后添加诸如单位等字符

8 df.applyPattern(style);

9 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

10 // 模式中的"#"表示如果该位存在字符,则显示字符,如果不存在,则不显示。

11 style = "##000.000 kg";

12 df.applyPattern(style);

13 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

14 // 模式中的"-"表示输出为负数,要放在最前面

15 style = "-000.000";

16 df.applyPattern(style);

17 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

18 // 模式中的","在数字中添加逗号,方便读数字

19 style = "-0,000.0#";

20 df.applyPattern(style);

21 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

22 // 模式中的"E"表示输出为指数,"E"之前的字符串是底数的格式,

23 // "E"之后的是字符串是指数的格式

24 style = "0.00E000";

25 df.applyPattern(style);

26 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

27 // 模式中的"%"表示乘以100并显示为百分数,要放在最后。

28 style = "0.00%";

29 df.applyPattern(style);

30 System.out.println("采用style: " + style + "格式化之后: " + df.format(data));

31 // 模式中的"\u2030"表示乘以1000并显示为千分数,要放在最后。

32 style = "0.00\u2030";

33 //在构造函数中设置数字格式

34 DecimalFormat df1 = new DecimalFormat(style);

35 //df.applyPattern(style);

36 System.out.println("采用style: " + style + "格式化之后: " + df1.format(data));

格式化之前的数字: 1234.56789

采用style: 0.0格式化之后: 1234.6

采用style: 00000.000 kg格式化之后: 01234.568 kg

采用style: ##000.000 kg格式化之后: 1234.568 kg

采用style: -000.000格式化之后: -1234.568

采用style: -0,000.0#格式化之后: -1,234.57

采用style: 0.00E000格式化之后: 1.23E003

采用style: 0.00%格式化之后: 123456.79%

采用style: 0.00‰格式化之后: 1234567.89‰
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: