有没有办法动态格式化浮点值?
我想我可以做这样的事情:
System.out.println(new BigDecimal(String.format("%" + k + "s", answer)).toPlainString());
其中 k 是每次通过循环的增量...但是,这似乎并不能解决问题...
我希望数字看起来像这样:
0.7897
0.78977
0.789778
0.7897789
有什么想法吗?
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
使用 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
您可以通过添加舍入模式来控制舍入,例如添加
n.setRoundingMode(RoundingMode.DOWN);
给
0.34
0.342
0.3425
0.34256
看看: http://docs.oracle.com/javase/tutorial/java/data/numberformat.html
我无法进一步帮助您,因为我不知道您感兴趣的格式。
如果您不需要变量的实际浮点值,则可以使用 String
中的 subString
API 在循环中打印它们。
优点是格式化的变量不会四舍五入。这是其他两个答案的黑客式替代方案。