Java 不使用时以双精度隐藏小数位数
我有一个简单的代码:Java 不使用时以双精度隐藏小数位数,java,Java,我有一个简单的代码: int num1 = <user input>; int num2 = <user input>; String operation = <user input>; double result = num1 operation num2; 尝试这种方法,并查看结果: Scanner in = new Scanner(System.in); DecimalFormat df = new DecimalFormat("##.####");
int num1 = <user input>;
int num2 = <user input>;
String operation = <user input>;
double result = num1 operation num2;
尝试这种方法,并查看结果:
Scanner in = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("##.####");
double num = in.nextDouble();
String result = df.format(num);
System.out.println(result);
输出:
3.67
3.67
BUILD SUCCESSFUL (total time: 5 seconds)
8
8
BUILD SUCCESSFUL (total time: 2 seconds)
5
3
/
1.6667
BUILD SUCCESSFUL (total time: 3 seconds)
更新:
3.67
3.67
BUILD SUCCESSFUL (total time: 5 seconds)
8
8
BUILD SUCCESSFUL (total time: 2 seconds)
5
3
/
1.6667
BUILD SUCCESSFUL (total time: 3 seconds)
您可以尝试此符合您要求的程序:
Scanner in = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("##.####");
double result = 0;
int num1 = in.nextInt();
int num2 = in.nextInt();
String operation = in.next();
if(operation.equals("/")){
result = (double)num1 / num2;
}
else if(operation.equals("*")){
result = num1 * num2;
}
else if(operation.equals("+")){
result = num1 + num2;
}
else if(operation.equals("-")) {
result = num1 - num2;
}
System.out.println(df.format(result));
测试用例:
3.67
3.67
BUILD SUCCESSFUL (total time: 5 seconds)
8
8
BUILD SUCCESSFUL (total time: 2 seconds)
5
3
/
1.6667
BUILD SUCCESSFUL (total time: 3 seconds)
您可能需要检查。您可以检查
Math.ceil(x.y)=Math.floor(x.y)
,如果它们相等,则表示没有小数部分,因此您可以安全地向下转换到int
,这里类似的答案是,尾随0的是格式的产物……使用decimalformatdecimalformat df=new decimalformat(“####.#”);df.format(result)
DecimalFormat帮助!谢谢