1.String类的format方法
package com.yushifu.problem;
//java中double保留两位小数的方法
import java.util.Scanner;
public class Demo01 {public static void main(String[] args) {//Practice:键盘输入数据,以保留小数点后两位的格式输出键盘输入的数据。double d = 0.0;//初始化变量d,用于接收输入的数据System.out.println("请输入数字,我们会以保留小数点后两位的格式输出给您!");//使用scanner接收键盘数据Scanner scanner = new Scanner(System.in);if(scanner.hasNextDouble()){d =scanner.nextDouble();}else {System.out.println("请输入浮点数!");}//1.方法一,使用String自带的format方法(会四舍五入)String format_d = String.format("%.2f",d);//将d的格式进行转换,转换后的数值在foramt_d里System.out.println("保留小数点后两位后,数值为:"+format_d);//注意这里输出要用设置好格式的format_d}
}
运行结果:
Tips:
2.使用BigDecimal的setScale方法
package com.yushifu.problem;
import java.math.BigDecimal;
import java.util.Scanner;/*** @author yushifu* @Description BigDecimal类是Java中进行精确计算的必备工具,其通过setScale方法的四舍五入方式,可以满足商业运作中对数字处理的高精度需求。*在实际的开发过程中,我们可以根据自己的需求,选择适当的四舍五入方式,确保数值计算的准确性和稳定性。*/
//java中double保留两位小数的方法
public class Demo02 {public static void main(String[] args) {//Practice:键盘输入数据,以保留小数点后两位的格式输出键盘输入的数据。double d = 3.1415926;//初始化变量d,用于接收输入的数据System.out.println("请输入数字,我们会以保留小数点后两位的格式输出给您!");//使用scanner接收键盘数据Scanner scanner = new Scanner(System.in);if(scanner.hasNextDouble()){d =scanner.nextDouble();}else {System.out.println("请您输入阿拉伯数字!");}//2.方法二,使用BigDecimal的setScale方法BigDecimal bigDecimal_d = new BigDecimal(d);System.out.println("保留小数点后两位后,数值为:"+bigDecimal_d.setScale(2,BigDecimal.ROUND_UP));}
}
ROUND_HALF_UP四舍五不入问题,可以点击链接参考这篇博客的解决方案。
Tips:
BIgDecimal的setScale四大常用方法总结:
- (1)ROUND_UP
不管保留数字后的数字是多少(0除外),ROUND_UP都会进1。
- (2)ROUND_DOWN
保留设置小数点位数的数字,之后的数全部直接去掉。
- (3)ROUNF_HALF_UP
四舍五入(>=5),但会出现四舍五不入的情况。
可以参考这篇博客的解决方案
- (4)ROUND_HALF_DOWN
五舍六入(>5),但也会出现五入的情况。
由于会出现类似四舍五不入等问题,idea中已不推荐使用。
3.使用Java中的Number&Math类中的Java round()方法
package com.yushifu.problem.decimal_point;
//java中double保留两位小数的方法
import java.util.Scanner;
public class Demo03 {public static void main(String[] args) {//Practice:键盘输入数据,以保留小数点后两位的格式输出键盘输入的数据。double d = 3.1415926;//初始化变量d,用于接收输入的数据System.out.println("请输入数字,我们会以保留小数点后两位的格式输出给您!");//使用scanner接收键盘数据Scanner scanner = new Scanner(System.in);if(scanner.hasNextDouble()){d =scanner.nextDouble();}else {System.out.println("请您输入阿拉伯数字!");}//3.方法三:使用Java中的Number&Math类中的Java round()方法d = (double) Math.round(d*100)/100;System.out.println("保留小数点后两位后,数值为:"+d);}
}