BigDecimal a= new BigDecimal(0.1F);这样写有没有精度问题?
时间: 2023-11-17 18:54:35 浏览: 36
是的,使用`new BigDecimal(0.1F)`这样的方式创建`BigDecimal`对象可能会存在精度问题。原因是浮点数在计算机中是以二进制表示的,无法精确地表示十进制的0.1。因此,将0.1F转换为`BigDecimal`时,可能会导致精度损失。
为了避免这个问题,可以使用字符串构造函数来创建`BigDecimal`对象,如下所示:
```java
BigDecimal a = new BigDecimal("0.1");
```
这样可以确保精度不受损失。
相关问题
BigDecimal num1 = new BigDecimal(0.1); BigDecimal num2 = new BigDecimal(0.2); BigDecimal sum = num1.add(num2);怎么改正
要在Java中正确计算浮点数的和,可以使用BigDecimal的字符串构造函数来避免精度丢失问题。以下是改正后的代码:
BigDecimal num1 = new BigDecimal("0.1");
BigDecimal num2 = new BigDecimal("0.2");
BigDecimal sum = num1.add(num2);
通过使用字符串构造函数,可以确保浮点数的精确表示,避免了使用浮点数构造函数时可能发生的舍入误差问题。
BigDecimal.value0f(0.00) 放入BigDecimal类型0.1会丢失精度嘛
是的,将0.1放入BigDecimal类型时会丢失精度。这是因为在Java中,0.1被表示为一个二进制无限循环小数,而BigDecimal是使用基于十进制的表示方式,因此无法完全准确地表示这个二进制小数。如果需要进行精确计算,建议使用BigDecimal的字符串构造函数,例如:
```
BigDecimal bd = new BigDecimal("0.1");
```
这样可以确保精度不丢失。