bigdecimal不保留小数点
时间: 2023-11-01 10:08:09 浏览: 47
BigDecimal是用来表示高精度的十进制数字的类,它可以保留小数点,而且可以进行精确的计算。如果你想要不保留小数点,可以使用BigDecimal的intValue()或者longValue()方法来获取整数部分。例如:
```
BigDecimal bd = new BigDecimal("123.456");
int intValue = bd.intValue(); // intValue的值为123
long longValue = bd.longValue(); // longValue的值为123
```
注意,这种方法会直接将小数点后面的部分截断,而不是四舍五入。如果你需要进行四舍五入,可以使用setScale()方法设置小数位数并指定舍入模式,然后再调用intValue()或者longValue()方法。例如:
```
BigDecimal bd = new BigDecimal("123.456");
bd = bd.setScale(0, RoundingMode.HALF_UP); // 四舍五入保留0位小数
int intValue = bd.intValue(); // intValue的值为123
long longValue = bd.longValue(); // longValue的值为123
```
相关问题
bigdecimal不保留小数点以后数怎么做
如果你想要使用 `BigDecimal` 类来进行高精度的浮点数运算,但是不需要保留小数点以后的位数,那么可以直接将保留位数设置为 0,例如:
```
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(0, RoundingMode.DOWN);
```
其中,第一个参数 `0` 表示不保留小数点后的位数,第二个参数 `RoundingMode.DOWN` 表示直接截断小数点后的位数,不进行四舍五入。这样,`BigDecimal` 对象 `bd` 中就只会保存整数部分,小数部分会被舍去。
Bigdecimal加法保留小数点三位有效
可以使用 `setScale()` 方法对 `BigDecimal` 进行小数点位数设置和舍入模式设置。以下是一个例子:
```java
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("1.23456");
BigDecimal b = new BigDecimal("2.34567");
// 加法
BigDecimal c = a.add(b);
// 保留小数点三位有效
c = c.setScale(3, RoundingMode.HALF_UP);
System.out.println(c); // 输出 3.580
}
}
```
在上面的例子中,`setScale(3, RoundingMode.HALF_UP)` 表示设置小数点位数为 3,使用四舍五入模式。