Java知识一
来源:互联网 发布:光线跟踪算法 编辑:程序博客网 时间:2024/05/21 11:18
一、BigDecimal
1.简介
float和double类型的主要涉及目标是为了科学计算和工程计算。然而,他们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是商业计算往往要求结果精确,这时候BigDecimal就派上大用场了。
BigDecimal由任意精度的整数非标度值和32位的整数标度(scale)组成。如果为零或正数,则标度是小数点后的位数;如果为负数,则将该数的非标度值乘以10的负scale次幂,因此,BigDecimal表示的值是unscaledValue X10-scale
2.用法
1)构造函数和加法运算
BigDecimal bd1 = new BigDecimal(12.2);BigDecimal bd2 = new BigDecimal("12.2");System.out.println(bd1);System.out.println(bd2);BigDecimal bd3 = bd1.add(bd2);System.out.println(bd3+"---"+bd1);输出结果:
12.19999999999999928945726423989981412887573242187512.224.399999999999999289457264239899814128875732421875---12.1999999999999992894572642398998141288757324218752)用来格式化小数点
BigDecimal bd1 = new BigDecimal(12.23);double value1 = bd1.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue();double value2 = bd1.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();double value3 = bd1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();double value4 = bd1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();System.out.println(value1);System.out.println(value2);System.out.println(value3);System.out.println(value4);输出结果:
12.012.212.2312.23即最少小数点后都有一位,最多不超过小数点后总位数。
setScale(1)表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
3.总结
1)商业计算使用BigDecimal;
2)尽量使用参数类型为String的构造函数;
3)如String一样,每运算一次产生一个新的对象。
0 0
- Java基本理论知识一
- 重温Java知识(一)
- Java知识(一)
- Java知识一
- Java继承的知识(一)
- Java相关知识(一)
- Java多线程知识小抄集(一)
- java web开发知识(一)
- Java多线程知识小抄集(一)
- Java知识总结(一)
- Java多线程知识小抄集(一)
- Java 入门(一)--Java知识图谱
- java知识总结(一)java基础知识
- Java程序设计知识与技能(一)
- Java 历程一之JNI相关知识
- 自己的java知识整理一
- java安全学习准备知识(一)
- 数据结构java版一 预备知识
- Java基础——Java重点基础之集合框架(二)
- 151205苹果手机屏幕尺寸及分辨率
- TikZ&PGF学习
- 链表中元素被访问的频度大的放在前面
- 数据结构与算法(2)——各种方法实现杨辉三角
- Java知识一
- 多项式加法,链表方法实现
- 世界名画陈列馆问题
- Linux_shell_正则表达式
- 继承与多态(四):虚析构函数
- 【poj1661】Help Jimmy
- 百度地图使用注意事项
- 算法复杂度分析
- 批处理 大小写转换