将数字舍入到n个小数位,在C中,我使用以下方法: -
#include <stdio.h>
void main()
{
float a=0.12685;
int n=3;
printf("%.*f",n,a);
}
注意: - 只有&#39; *&#39;可用于将值传递给float格式说明符。像%.xf这样的语句会给出错误。
有没有办法在Java中做同样的事情?
答案 0 :(得分:2)
您可以构建格式字符串:
double a = 0.12685;
int n = 3;
System.out.printf("%." + n + "f", a);
您还可以使用NumberFormat
:
NumberFormat fmt = NumberFormat.getInstance();
fmt.setMinimumFractionDigits(n);
fmt.setMaximumFractionDigits(n);
System.out.print(fmt.format(a));
两者都会打印出来:
0.127
答案 1 :(得分:0)
如果您希望浮点值舍入到3位小数,那么您可以像:
float a = 0.12685f;
System.out.printf("%.3f", a);
//Output:
0.127
更好的方法是使用格式化程序:
DecimalFormat df = new DecimalFormat("#.000");
System.out.println(df.format(a));
//output
0.127