其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。
在使用BigDecimal类来进行计算的时候,主要分为以下步骤:
1、用float或者double变量构建BigDecimal对象。
2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
3、把BigDecimal对象转换成float,double,int等类型。
一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象。
请看下面的例子:
package com.js.Sth;
/**
* BigDecimal精确计算
* @author js
*/
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
//如果不使用精确计算
System.out.println("如果不使用精确计算,结果:");
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
System.out.println("..................");
System.out.println("..................");
System.out.println("..................");
//使用精确计算
System.out.println("使用BigDecimal类进行精确计算,结果:");
System.out.println(add(0.05,0.01));
System.out.println(subtract(1.0,0.42));
System.out.println(multiply(4.015,100));
System.out.println(devide(123.3,100));
}
//精确加法计算
public static double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
//精确减法计算
public static double subtract(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
//精确乘法计算
public static double multiply(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
//精确除法计算
public static double devide(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2).doubleValue();
}
}