Java程序如何去掉平方计算结果小数点后末尾的零?
问题描述
现有一个Java计算器程序,可接收两个整数输入,完成加减乘除、平方运算,代码如下:
import java.util.Scanner; import java.lang.Math; public class Calculator { public static void main(String[] args) { int firstNum; int secondNum; int sum; int product; int difference; float division; Scanner scanner = new Scanner(System.in); System.out.print("Enter First Number : "); firstNum = scanner.nextInt(); System.out.print("Enter Second Number : "); secondNum = scanner.nextInt(); scanner.close(); sum = firstNum + secondNum; difference = firstNum - secondNum; product = firstNum * secondNum; division = (float) firstNum / secondNum; double firstSquare = Math.pow(firstNum, 2); double secondSquare = Math.pow(secondNum, 2); System.out.println("Sum = " + sum); System.out.println("Division = " + division); System.out.println("Product = " + product); System.out.println("Difference = " + difference); System.out .println("Square of " + firstNum + " is " + firstSquare + " Square of " + secondNum + " is " + secondSquare); } }
程序运行输出示例:
当前问题:平方计算返回的double类型结果末尾会带有多余的小数点后零,需要去掉这部分内容。
解决方案
提供三种适配不同场景的处理方式:
- 方案1:强转为int类型(最适配当前场景)
因为输入的是整数,平方结果必然是整数,可以直接将Math.pow的返回值强转为int,从根源上避免小数输出:
// 修改平方计算的代码 int firstSquare = (int) Math.pow(firstNum, 2); int secondSquare = (int) Math.pow(secondNum, 2);
- 方案2:使用printf格式化输出
如果不想修改变量类型,可以在输出时指定不展示小数位:
// 替换原来的平方输出语句 System.out.printf("Square of %d is %.0f Square of %d is %.0f%n", firstNum, firstSquare, secondNum, secondSquare);
- 方案3:使用DecimalFormat格式化
如果后续需要兼容带小数的计算结果,自动移除末尾无意义的0,可以用DecimalFormat处理:
// 首先导入包 import java.text.DecimalFormat; // 初始化格式化对象,这里设置最多保留3位小数,无小数时自动隐藏小数点和后缀0 DecimalFormat df = new DecimalFormat("#.###"); // 输出时调用format方法 System.out.println("Square of " + firstNum + " is " + df.format(firstSquare) + " Square of " + secondNum + " is " + df.format(secondSquare));
修改后完整代码示例(采用方案1)
import java.util.Scanner; import java.lang.Math; public class Calculator { public static void main(String[] args) { int firstNum; int secondNum; int sum; int product; int difference; float division; Scanner scanner = new Scanner(System.in); System.out.print("输入第一个整数: "); firstNum = scanner.nextInt(); System.out.print("输入第二个整数: "); secondNum = scanner.nextInt(); scanner.close(); sum = firstNum + secondNum; difference = firstNum - secondNum; product = firstNum * secondNum; division = (float) firstNum / secondNum; // 强转为int,避免小数后缀 int firstSquare = (int) Math.pow(firstNum, 2); int secondSquare = (int) Math.pow(secondNum, 2); System.out.println("和 = " + sum); System.out.println("商 = " + division); System.out.println("积 = " + product); System.out.println("差 = " + difference); System.out.println(firstNum + "的平方是 " + firstSquare + "," + secondNum + "的平方是 " + secondSquare); } }
内容的提问来源于stack exchange,提问作者Hamzah
相关产品推荐
相关产品推荐

