如果实际应用程序允许存在适当的误差,那么可以使用float或double类型。如果需要进行精确运算,则应该使用java.math.BigDecimal类。BigDecimal类支持浮点数的精确加法、减法和乘法运算,对于浮点数的除法运算,可以满足用户指定的精度。BigDecimal类包括以下方法:
add(BigDecimal b):进行精确的加法运算
subtract(BigDecimal b):进行精确的减法运算
multiply(BigDecimal b):进行精确的乘法运算
divide(BigDecimal b,int scale,RoundingModemode):进行除法运算。参数 scale指定需要精确到小数点以后几位。参数mode指定小数部分的舍入模式,如果取值为BigDecimal.ROUND_HALF_UP,则表示采用四舍五入模式。
例:
import java.math.BigDecimal;
public class BigDecimal1 {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("10.123");
BigDecimal bigDecimal1 = new BigDecimal(10.123);
System.out.println(bigDecimal);//10.123
System.out.println(bigDecimal1);//10.1229999999999993320898283855058252811431884765625
}
}
可以用作面试的题:
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
//倒着推算的逻辑题
/**
* 李白无事街上走,
* 提壶去买酒。
* 遇店加一倍,
* 见花喝一斗,
* 五遇花和店,
* 喝光壶中酒,
* 试问李白壶中
* 原有多少斗酒
*
*/
BigDecimal bigDecimal = new BigDecimal(0);
for(int i=1;i<=5;i++){
bigDecimal = bigDecimal.add(new BigDecimal("1"));
bigDecimal = bigDecimal.divide(new BigDecimal("2"));
}
System.out.println(bigDecimal);
}
}