我正在制作一个计算器,但我正在努力使我的数字变得圆满,如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);
答案 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;