java 保留两位或者多位的四舍五入操作方法

本文提供了四种不同的方法来处理小数,包括使用Math类、BigDecimal类、DecimalFormat类以及String.format()方法来实现对数字的四舍五入及格式化显示。每种方法都附带了详细的代码示例。

提供几种保留小数点后几位的新旧使用方法,废话不多说直接上方法代码

一:使用Math 

/**
 * 进行四舍五入操作
 * @param num 原始数据
 * @param scale 保留的位数
 * @return 已经正确四舍五入后的数据内容
 */
public static double round(double num,int scale) {
	return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
}

二:使用BigDecimal 

/**
 * 进行四舍五入操作
 * @param num 原始数据
 * @param scale 保留的位数
 * @return 已经正确四舍五入后的数据内容
 */
public static double round(double num,int scale) {
    return new BigDecimal(num)
			.divide(new BigDecimal(1),scale,BigDecimal.ROUND_HALF_UP)
			.doubleValue();
}

三:使用DecimalFormat

/**
 * double类型保留两位小数
 * @param d 原始数据
 * @return 正确保留两位小数后的数据内容
 */
public static String decimalFormatDouble(double d) {
	DecimalFormat format = new DecimalFormat("#.00");
	return format.format(d);
}

四:使用String.format()方法 

/**
 * double类型保留两位小数
 * @param d 原始数据
 * @return 正确保留两位小数后的数据内容
 */
public static String stringFormatDouble(double d) {
    return String.format("%.2f", d);
}

 

 

Java 中实现四舍五入保留两位小数有多种方法,以下是几种常见的解决方案: ### 使用 `BigDecimal` 实现 通过创建一个 `BigDecimal` 对象并将数值设置为其精度范围内的值来完成操作。可以指定舍入模式为 `ROUND_HALF_UP` 来达到标准的四舍五入效果。 ```java import java.math.BigDecimal; public class Main { public static void main(String[] args) { double value = 123.456; BigDecimal bd = new BigDecimal(value); double roundedValue = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(roundedValue); // 输出:123.46 } } ``` 这种方法利用了 `BigDecimal` 的高精确度特性[^1]。 ### 利用 `DecimalFormat` 进行格式化处理 借助于 `DecimalFormat` 类能够方便地定义输出的小数位数以及应用特定的格式规则。 ```java import java.text.DecimalFormat; public class Main { public static void main(String[] args) { double value = 123.456; DecimalFormat df = new DecimalFormat("#.00"); String formattedString = df.format(value); System.out.println(formattedString); // 输出:"123.46" } } ``` 这里采用了 `"#.00"` 模式字符串表示至少显示一位整数部分加上固定两位小数部分的形式[^2]。 ### 借助 `String.format()` 函数简化过程 可以直接调用静态方法 `String.format()` ,它允许我们按照 C 风格 printf() 样式的占位符语法构建格式化的字符串表达式。 ```java public class Main { public static void main(String[] args) { double value = 123.456; String formattedString = String.format("%.2f", value); System.out.println(formattedString); // 输出:"123.46" } } ``` 此方式简单明了,适合快速原型开发阶段使用[^3]。 ### 结合 `NumberFormat` 完成国际化需求下的数字呈现 如果考虑到不同地区对于货币单位或者百分比展示习惯有所差异,则推荐采用更为灵活强大的 `NumberFormat` API。 ```java import java.text.NumberFormat; public class Main { public static void main(String[] args) { double value = 123.456; NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); String formattedString = nf.format(value); System.out.println(formattedString); // 可能会因本地环境而异,比如美国英语环境下输出:"123.46" } } ``` 该方案提供了更好的跨文化兼容能力[^4]。 以上就是关于如何在 Java 程序里做到对浮点数执行四舍五入后再限定只留取到第二位小数的一些常用手段介绍[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值