java bigdecimal 转String 小数点后面为0的就显示整数部分
时间: 2024-03-18 19:42:12 浏览: 20
可以使用 `BigDecimal.stripTrailingZeros()` 方法去除小数点后面的0,再使用 `BigDecimal.toPlainString()` 方法将 `BigDecimal` 对象转换为字符串。如果去除小数点后面的0后,结果为整数,则只显示整数部分。示例代码如下:
```java
BigDecimal num = new BigDecimal("3.14");
String str = num.stripTrailingZeros().toPlainString();
System.out.println(str); // 输出 "3.14"
BigDecimal num2 = new BigDecimal("3.00");
String str2 = num2.stripTrailingZeros().toPlainString();
System.out.println(str2); // 输出 "3"
```
在第一个示例中,小数点后面不是0,因此输出 "3.14"。在第二个示例中,小数点后面是两个0,使用 `stripTrailingZeros()` 方法去除后,结果为整数3,因此输出 "3"。
相关问题
BigDecimal 如果是整数取整,如果是小数保留两位小数点
可以使用 BigDecimal 的 setScale() 方法来设置小数位数,如果当前 BigDecimal 是整数,可以先使用 intValue() 方法将其转换为 int 类型,再进行取整操作。
以下是一个示例代码:
```java
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("1234.56789");
// 保留两位小数
bd1 = bd1.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd1); // 输出 1234.57
// 取整
bd1 = bd1.setScale(0, BigDecimal.ROUND_HALF_UP);
System.out.println(bd1); // 输出 1235
BigDecimal bd2 = new BigDecimal("100");
// 保留两位小数
bd2 = bd2.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd2); // 输出 100.00
// 取整
int num = bd2.intValue();
System.out.println(num); // 输出 100
}
}
```
在上面的代码中,我们首先创建了一个 BigDecimal 对象 bd1,并对其进行了保留两位小数和取整操作。然后,我们又创建了一个 BigDecimal 对象 bd2 并进行相同的操作,但是在取整时使用了 intValue() 方法将其转换为 int 类型。
运行上述代码,输出如下:
```
1234.57
1235
100.00
100
```
Java将带小数点的数字字符串转化为Long类型
无法直接将带小数点的数字字符串转化为Long类型,因为Long类型只能表示整数。如果需要将带小数点的数字字符串转化为整数类型,可以使用以下方法:
1.使用Double类型进行转换,然后强制转换为Long类型。
例如:
```
String str = "123.45";
double d = Double.parseDouble(str);
long l = (long) d;
```
2.先将字符串转化为BigDecimal类型,然后再将BigDecimal类型转化为Long类型。
例如:
```
String str = "123.45";
BigDecimal bd = new BigDecimal(str);
long l = bd.longValue();
```
需要注意的是,这两种方法都会丢失小数部分的数值,只保留整数部分的数值。如果需要保留小数部分的数值,可以考虑使用其他类型,如BigDecimal类型。