代码
四舍五入,保留几位小数
原版(有点多此一举),BigDecimal内部有方法做到这一点
package com.woniuxy.Demo1;import java.util.Scanner;import java.math.BigDecimal;import java.lang.NumberFormatException;import java.util.InputMismatchException;public class Test1 {static Scanner scanner = new Scanner(System.in); //打开扫描器public static void main(String[] args) {//定义一个浮点数 四舍五入 保留 位小数System.out.println("请输入一个浮点数:");BigDecimal num1 = new BigDecimal("0");//用户输入的浮点数初始化while(true) {try {num1 = new BigDecimal(scanner.next());//输入break;}catch(NumberFormatException e) {//格式异常捕获System.out.println("您输入的格式不对,请重新输入:");}}System.out.println("请输入保留位数:");int digit = 0;//保留位数初始化while(true) {try {digit = scanner.nextInt();//用户输入break;}catch(InputMismatchException e) {//非整型数据异常捕获System.out.println("您输入的保留位数格式不对,请重新输入:");}}BigDecimal number = new BigDecimal("0");//结果初始化number = retainDecimal(digit,num1); //调用方法处理System.out.println(number);//例子:34.4587 34.46scanner.close();//关闭扫描器}public static BigDecimal retainDecimal(int digit, BigDecimal number ) {BigDecimal ten = new BigDecimal("10");//将10的类型改为BigDecimal类型,用于运算位数BigDecimal carryBit = new BigDecimal("0.5");//同上,用于四舍五入for(int i = 0; i < digit; i++)number = number.multiply(ten);//乘以10number = number.add(carryBit);//四舍五入步骤1int num1 = number.intValue();//取整BigDecimal num2 = new BigDecimal(num1);//将num1的类型从int转为BigDecimal类型for(int j = 0; j < digit; j++)num2 = num2.divide(ten);//除10return num2;//返回一个BigDecimal类型的数}}
