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的是格式的产物……使用decimalformat
decimalformat df=new decimalformat(“####.#”);df.format(result)
DecimalFormat帮助!谢谢