2015-08-30 26 views
0

到数字舍入到n-小数位,在C,I采用下面的方法: -传递值漂浮格式说明在Java

#include <stdio.h>   
void main()  
{  
float a=0.12685;  
int n=3;  
printf("%.*f",n,a);  
}  

注: - 仅“*”可用来将值传递给float格式说明符。像%.xf这样的语句会导致错误。

有没有办法在Java中做同样的事情?

+1

可能重复[如何把一个数字在Javañ小数(http://stackoverflow.com/questions/153724/how-在-ja-decimal-places-in-java) – Tunaki

+0

@Tunaki。我不认为这是重复的,因为在这个问题中,小数位数是可变的,不是固定的。 – Hoopje

回答

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 
+1

我想把用户的小数位数作为输入。 – ankushbbbr

+0

即n是用户输入。 '#include void main() { a = 0.12685; 012fscanf(“%d”,&n); printf(“%。* f”,n,a); }' – ankushbbbr

+0

此答案不使用变量'n'中定义的动态小数位数。 – Andreas

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