2013-08-30 37 views
3

我有一个变量类型float.I想打印它达到3精度小数包括尾随零。格式化java中浮点数upto 3十进制精度

实施例:

2.5 >> 2.500

1.2 >> 1.200

1.3782 >> 1.378

2 >> 2.000

我想它利用

DecimalFormat _numberFormat= new DecimalFormat("#0.000"); 
Float.parseFloat(_numberFormat.format(2.5)) 

但它不是转换2.5 >> 2.500。

难道我做错了什么..

请帮助..

+2

为什么你叫'Float.parseFloat'的输出? – user2357112

+0

_numberFormat.format(2.5)的输出是字符串,我需要在打印它之前在另一个浮点变量中设置这个新的格式化值..这就是为什么我要调用Float.parseFloat ... – Abhay

+0

'float'只是一个数字。它没有任何关于您在显示时使用多少数字的信息。只有字符串表示具有该信息。 – user2357112

回答

6

这里是错误Float.parseFloat这是转换回2.5

_numberFormat.format(2.5)输出为2.500

但是这个Float.parseFloat使它回到2.5

所以,你的代码必须

DecimalFormat _numberFormat= new DecimalFormat("#0.000"); 
_numberFormat.format(2.5) 
+1

只是刚刚发现,鹰眼为你+1 – MadProgrammer

0

你写了一个小数格式化字符串然后将其解析成一个浮动。

如果他们读2.500或2.5,虽然前者是格式化的,但他们并不关心。

由于IEEE754无法处理指定重要配置的数量,浮点数不会保留尾随零。

+0

@MadProgrammer 固定重写,我的坏。 – hexafraction

0

尝试

System.out.printf("%.3f", 2.5); 

的的printf方法允许你指定你的输入格式。在这种情况下%.3f意味着

打印以下数作为一个浮点数用3个小数

0

尝试格式化如下:

DecimalFormat df = new DecimalFormat(); 
df.applyPattern(".000"); 
System.out.println(df.format(f));