Java中怎样保留两位小数。是不是要用Math.round()啊?

程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入整数 x,计算并输出下列函数 f(x) 的值(保留2位小数,如果答案为3.50,则直接显示为3.5)。
当 x 等于0时,f(x) = 0,当 x 不等于0时, f(x) = 1/x 。
输入输出示例:括号内是说明
输入
3 (repeat=3)
6 (x=6)
10 (x=10)
0 (x=0)
输出
f(6)=0.17
f(10)=0.1
f(0)=0.0

import java.util.Scanner;
public class Test30008{
public static void main(String args[]){
int repeat, ri,x;
double y;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri = 1; ri <= repeat; ri++){
x=in.nextInt();
/*---------*/
System.out.println("f("+x+")="+y);
}
}
}

我写的

import java.util.Scanner;
public class Test30008{
public static void main(String args[]){
int repeat, ri,x;
double y;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri = 1; ri <= repeat; ri++){
x=in.nextInt();
/*---------*/
if(x!=0)
y=1/x;

else
y=0;
System.out.println("f("+x+")="+y);
}
}
}
应该怎么改啊?

总的说来,我用了两中方式。
System.out.printf("f(%d)= %.2f\n",x,y);printf是java继承C来的,可以用c的方式来格式化输出。
还有就是java自己提供了更为丰富的格式化输出。用到Format,format 是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。 Format 定义了编程接口,用于将语言环境敏感的对象格式化为 String(使用 format 方法)和将 String 重新解析为对象(使用 parseObject 方法)。数字
NumberFormat 用于格式化输出 数字,在java.text.包中,如果你有API,那就很简单的多了。
你复制下去,运行一下,我测试的是
3
2 =0.5
3 =0.33
4 =0.25
和你的要求一样。希望采纳。
import java.text.NumberFormat;
import java.util.Scanner;
public class Test
{
public static void main(String args[])
{
int repeat, ri,x;
double y;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(2);
for(ri = 1; ri <= repeat; ri++)
{
x=in.nextInt();
/*---------*/
if(x!=0)
y=1.0/x; //还有在这里,是1.0/x,不然结果全是0.如果不懂,下面有连接,我回答的

else
y=0;
//System.out.println("f("+x+")="+y);
String s=f.format(y);
//System.out.printf("f(%d)= %.2f\n",x,y);
System.out.println("f("+x+")="+s);
//如果要得到你所说的,我建议用numberformat来格式化输出。
}
}
}

http://zhidao.baidu.com/question/390739373.html?old=1&afterAnswer=1#here
温馨提示:答案为网友推荐,仅供参考
相似回答