BigDecimal 四舍五入 保留2位小数
时间: 2023-10-13 15:23:13 浏览: 104
在 Java 中,可以使用 BigDecimal 类的 setScale 方法来实现四舍五入并保留指定位数的功能。下面是一个示例代码:
```java
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal num = new BigDecimal("3.14159");
BigDecimal rounded = num.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(rounded); // 输出结果为 3.14
}
}
```
在上面的示例中,我们首先创建了一个 BigDecimal 对象 `num`,然后调用 `setScale` 方法,将小数点后的位数设置为 2,同时指定使用 ROUND_HALF_UP 模式进行四舍五入。最后,将结果赋值给 `rounded` 变量,并输出结果。
需要注意的是,在 `setScale` 方法中指定的小数点后位数如果超过了原始数字的小数点后位数,那么会在末尾自动补零。例如,如果原始数字为 `3.14`,而 `setScale` 方法中指定的小数点后位数为 4,那么结果会自动补零变为 `3.1400`。
相关问题
java代码-bigdecimal 四舍五入保留2位小数. 金额从单位分转成单位元
在Java中,我们通常使用BigDecimal来处理浮点数运算,它提供了精确的十进制运算。想要实现四舍五入保留2位小数并将金额从单位分转换成单位元的操作,可以按照以下步骤进行操作:
1. 将单位分转换成BigDecimal类型的金额对象。例如,如果金额为1234分,可以写成如下代码:
```
BigDecimal amount = new BigDecimal("1234");
```
2. 将金额除以100,转换成单位元并保留两位小数。可以使用setScale()方法来实现四舍五入,例如:
```
amount = amount.divide(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
```
其中,setScale(2)表示保留2位小数,RoundingMode.HALF_UP表示采用四舍五入的规则进行舍入。
3. 最后得到的amount对象就是单位元的金额,可以直接输出或者进行其他操作。
完整代码如下:
```
public class Main {
public static void main(String[] args) {
// 金额单位为分
BigDecimal amountInFen = new BigDecimal("1234");
// 将金额转换为单位元并保留2位小数
BigDecimal amountInYuan = amountInFen.divide(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
// 输出结果
System.out.println("金额(元):" + amountInYuan);
}
}
```
BigDecimal 四舍五入保留4位小数
在Java中,如果你想要使用`BigDecimal`进行四舍五入并保留四位小数,可以利用`setScale`方法配合`RoundingMode`中的`RoundingMode.HALF_UP`(向上取整)。这个模式会在小数部分的中间位置遇到5时向更靠大的方向进位。以下是一个示例:
```java
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
BigDecimal bd = new BigDecimal("12345.67891234");
// 四舍五入到四位小数
BigDecimal roundedBd = bd.setScale(4, RoundingMode.HALF_UP);
// 输出结果
System.out.println("Original value: " + bd);
System.out.println(" Rounded to 4 decimal places: " + roundedBd);
// 或者使用DecimalFormat进行格式化
DecimalFormat df = new DecimalFormat("#.####");
String formattedValue = df.format(roundedBd);
System.out.println("Formatted with 4 decimals: " + formattedValue);
}
}
```
上述代码会输出:`12345.6789`,这就是四舍五入后的结果。
阅读全文