在java中动态格式化字符串

时间:2013-09-11 20:52:46

标签: java

有没有办法动态格式化浮点值?

我以为我可以这样做:

System.out.println(new BigDecimal(String.format("%" + k + "s", answer)).toPlainString());

其中k是每次循环的增量...但是,这似乎没有诀窍......

我希望数字看起来像这样:

0.7897
0.78977
0.789778
0.7897789 

任何想法?

4 个答案:

答案 0 :(得分:6)

for (int i=3; i<10; i++) {
    System.out.println(String.format("%1." + i + "f", Math.PI));
}

这样的事情应该有效

[tmp] % java Foo
3.142
3.1416
3.14159
3.141593
3.1415927
3.14159265
3.141592654

答案 1 :(得分:2)

使用NumberFormat可以像这个例子那样完成

 float f = 0.342566246
 NumberFormat n = NumberFormat.getInstance()
 for(int i = 2; i< 6;i++)
 {
     n.setMaximumFractionDigits(i)
     System.out.println(n.format(f))
 }

给予,哪一轮。

0.34
0.343
0.3426
0.34257

您可以通过添加RoundingMode例如添加

来控制舍入
n.setRoundingMode(RoundingMode.DOWN);

给出

0.34
0.342
0.3425
0.34256

答案 2 :(得分:0)

查看:http://docs.oracle.com/javase/tutorial/java/data/numberformat.html

我无法帮助你,因为我不知道你感兴趣的格式。

答案 3 :(得分:0)

如果您不需要变量的实际浮点值,则可以使用subString中的String API在循环中打印它们。

优点是您的格式化变量不会被舍入。这是另外两个答案的替代方案。