BigDecimal
BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。
是用户用来控制数值精度和舍入方法的类,适合用于解决数据精度过滤问题。
这里只是作为一个引子,如果需要用到还是查看api的比较好。
import java.math.BigDecimal;
public class DecimalTest {
public static void main(String[] args) {
double num=12.345623;
BigDecimal value1=new BigDecimal(num);
System.out.println("数字构造"+value1);
BigDecimal value2=new BigDecimal(Double.valueOf(num).toString());
System.out.println("字符构造"+value2);
System.out.println("由输出的结果我们可以看到使用数字类型的构造已经失真了,所以最好还是采用字符构造");
//对于向上下距离相等的数值的舍入,保留2位小数
//setScale方法中,第一个参数是设置保留小数位数,第二个参数是这是舍入方式
//四舍五入
BigDecimal value =value2.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("ROUND_HALF_UP: "+value);
//舍入趋向于零的方式
value=value2.setScale(2, BigDecimal.ROUND_DOWN);
System.out.println("ROUND_DOWN: "+value);
//舍入远离零的方式
value=value2.setScale(2, BigDecimal.ROUND_UP);
System.out.println("ROUND_UP"+value);
}
}
输出结果:
- 数字构造12.345622999999999791498339618556201457977294921875
- 字符构造12.345623
- 由输出的结果我们可以看到使用数字类型的构造已经失真了,所以最好还是采用字符构造
- ROUND_HALF_UP: 12.35
- ROUND_DOWN: 12.34
- ROUND_UP12.35
当我们需要对大量的数据进行精度变换的时候用此类很简便。
本文出自 “orangleliu笔记本” 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309429