无法格式化数字

时间:2016-10-19 18:21:21

标签: java

我正在制作一个计算器,但我正在努力使我的数字变得圆满,如18.0到18.如何通过格式化我的计算器显示数字为18而不是18.0?这是我正在使用的代码。

    String answer;
    double D;
    secondnumber = Double.parseDouble(numTx.getText());

    if (operation.equals("+")) {
        result = firstnum + secondnumber;
        answer = Double.toString(result);
        numTx.setText(answer);
    }
    if (operation.equals("-")) {
        result = firstnum - secondnumber;
        answer = Double.toString(result);
        numTx.setText(answer);
    }
    if (operation.equals("/")) {
        result = firstnum / secondnumber;
        answer = Double.toString(result);
        numTx.setText(answer);
    }
    if (operation.equals("*")) {
        result = firstnum * secondnumber;
        answer = Double.toString(result);
        numTx.setText(answer);
    }

上面是我尝试使用的代码,但它给出了巨大的错误。 answer = String.format("%1 $ .1f",result);

2 个答案:

答案 0 :(得分:6)

double值设为18而非18.0不是舍入。这是格式化

使用NumberFormat并指定小数点后要查看的最小和最大位数。

创建此类NumberFormat的最简单方法是实际创建DecimalFormat

示例:

DecimalFormat fmt = new DecimalFormat("0.####"); // show between 0 and 4 decimals, as needed
System.out.println(fmt.format(18.0));    // prints: 18
System.out.println(fmt.format(18.250));  // prints: 18.25
System.out.println(fmt.format(Math.PI)); // prints: 3.1416

答案 1 :(得分:3)

如果您想要整数结果,可以将double转换为int(或long,如果您期望得到大答案的话)。注意:此演员表将为答案提供答案,因此如果您想要更典型的舍入结果,可以使用Math.round()。要将double投射到int,您可以执行此操作

double i = 1.32;
int j = (int) i;