在java中如何保留整数、保留小数位数
保留整数部分:(所有方法)
方法1: 强制类型转换为整数 取整数位
double number = 1.67;
int a = (int) number; //强制转换为整数,a将为1
**方法2:**使用Math.floor()
函数 向下取整
double number = 1.67;
int a = (int) Math.floor(number); // 使用Math.floor向下取整,a将为1
**方法3:**使用Math.ceil()
函数 向上取整(四舍五入)
double number = 1.67;
int a = (int) Math.ceil(number); // 使用Math.floor向下取整,a将为2
**方法4:**使用Math.round()
函数 四舍五入取整
double number = 1.67;
int a = (int) Math.round(number); // 将1.67四舍五入为整数,a将为2
保留小数位数:(所有方法)
**方法1:使用 **DecimalFormat
类 四舍五入
double number = 1.6789;
DecimalFormat decimalFormat = new DecimalFormat("#.##"); // 保留两位小数
String res = decimalFormat.format(number); // 四舍五入
System.out.println(res); //1.68
**方法2:使用 **BigDecimal
类 四舍五入
double number = 1.6789;
int decimalPlaces = 2;// 保留两位小数
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(decimalPlaces, RoundingMode.HALF_UP); // 四舍五入
double res = bd.doubleValue();
System.out.println(res); //1.68
**方法3:使用 **DecimalFormat
类 非四舍五入
double number = 1.6789;
DecimalFormat df = new DecimalFormat("#.##"); // 保留两位小数
df.setRoundingMode(RoundingMode.DOWN); // 非四舍五入,RoundingMode.FLOOR也可以
String res = df.format(number);
System.out.println(res); //1.67
**方法4:使用 **BigDecimal
类 非四舍五入
double number = 1.6789;
int decimalPlaces = 2; // 保留两位小数
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(decimalPlaces, BigDecimal.ROUND_DOWN); // 非四舍五入.ROUND_FLOOR也可以
double res = bd.doubleValue();
System.out.println(res);
参考地址:
1.https://blog.csdn.net/lxh_worldpeace/article/details/106839012
2.https://blog.csdn.net/qq_41477034/article/details/102811790
3.https://blog.csdn.net/devnn/article/details/83104228