Java实现 更精确地使用浮点数
- @author jasmyn
- 在完成浮点数精确计算地过程中使用了BigDecimal类,它用于大数字地精确计算。
- 调用该类的subtract()方法实现减法运算。
- add():加法运算
- subtract():减法运算
- multiply():乘法运算
- divide():除法运算
- 创建BigDecimal类的实例时,在构造方法中一定要使用数字字符串作为参数;如果直接使用浮点数或该类型的变量作为参数,那么构造方法接收的是经过二进制存储的浮点数,那样就会是不精确的浮点数。
package package2;
import java.math.BigDecimal;
/**
* 更精确地使用浮点数
* @author jasmyn
* 在完成浮点数精确计算地过程中使用了BigDecimal类,它用于大数字地精确计算。
* 调用该类的subtract()方法实现减法运算。
* add():加法运算
* subtract():减法运算
* multiply():乘法运算
* divide():除法运算
* 创建BigDecimal类的实例时,在构造方法中一定要使用数字字符串作为参数;如果
* 直接使用浮点数或该类型的变量作为参数,那么构造方法接收的是经过二进制存储
* 的浮点数,那样就会是不精确的浮点数。
*/
public class AccuratelyFloat {
public static void main(String[] args) {
// TODO Auto-generated method stub
double money=2;//现有金额
double price=1.1;//商品价格
double result=money-price;
System.out.println("非精确计算");
System.out.println("剩余金额:"+result);//输出运算结果
//精确浮点数的解决方法
BigDecimal money1=new BigDecimal("2");//现有金额
BigDecimal price1=new BigDecimal("1.1");//商品价格
BigDecimal result1=money1.subtract(price1);
System.out.println("精确计算");
System.out.println("剩余金额:"+result);//输出精确结果
}
}