Bigdecimal使用实践
来源:互联网 发布:微软词典知乎 编辑:程序博客网 时间:2024/04/29 19:11
-最近开发用到bigdecimal比较多,看了几篇博文,实践下,知其所以然。
参考博文
- BigDecimal 使用详解
- 详细BigDecimal 算法请参考
- java BigDecimal 使用详解
package cn.com.github2;import java.math.BigDecimal;public class TestBigdecimal { // 初始化 public void bigdecimalConstruct() { BigDecimal bigDecimal = BigDecimal.valueOf(1.22); System.out.println("value of bigDecimal:" + bigDecimal); // 使用double数值初始化 BigDecimal dDouble = new BigDecimal(1.22); System.out.println("construct double value:" + dDouble); // 使用string数值初始化 BigDecimal bString = new BigDecimal("1.22"); System.out.println("construct string value:" + bString); // 使用String的valueof方法来初始化数值 BigDecimal dToString = new BigDecimal(String.valueOf(1.22)); System.out.println("construct dToString value:" + dToString); // 使用double的tostring方法来初始化数值 BigDecimal dToDouble = new BigDecimal(Double.toString(1.22)); System.out.println("construct dToDouble value:" + dToDouble); // output /* * value of bigDecimal:1.22 * construct double value:1.2199999999999999733546474089962430298328399658203125 * construct string value:1.22 * construct dToString value:1.22 * construct dToDouble value:1.22 */ } // 基本运算,以加为例 public void calculateBigdecimal() { BigDecimal addBigdecimal = new BigDecimal(1.22); // bigdecimal做这些基本运算,基本就是会返回一个新的对象,如果没有新的对象接收,返回的还是原来的值 addBigdecimal.add(BigDecimal.valueOf(1.33)); System.out.println("add calculate1:" + addBigdecimal); // add calculate1:1.2199999999999999733546474089962430298328399658203125 // 有新对象接收,才返回计算的值 addBigdecimal = addBigdecimal.add(BigDecimal.valueOf(1.33)); System.out.println("add calculate2:" + addBigdecimal); // add calculate2:2.5499999999999999733546474089962430298328399658203125 } // 精度运算,格式化小数点,以经典的四舍五入为例 public void scaleBigdecimal() { BigDecimal addBigdecimal = new BigDecimal(1.2245); BigDecimal addBigdecimal1 = new BigDecimal(1.2244); BigDecimal addBigdecimal2 = new BigDecimal(1.2246); // 四舍五入 addBigdecimal = addBigdecimal.setScale(3, BigDecimal.ROUND_HALF_UP); //计算小数点后有多少位 System.out.println("scale value:" + addBigdecimal.scale()); //scale value:3 System.out.println("ROUND_HALF_UP value:" + addBigdecimal); // ROUND_HALF_UP value:1.224,这里有很大的疑问,为何不进位? addBigdecimal1 = addBigdecimal1.setScale(3, BigDecimal.ROUND_HALF_UP); System.out.println("ROUND_HALF_UP value:" + addBigdecimal1); // ROUND_HALF_UP value:1.224 addBigdecimal2 = addBigdecimal2.setScale(3, BigDecimal.ROUND_HALF_UP); System.out.println("ROUND_HALF_UP value:" + addBigdecimal2); // ROUND_HALF_UP value:1.225 BigDecimal addBigdecima3 = new BigDecimal(1.2255); BigDecimal addBigdecimal4 = new BigDecimal(1.2254); BigDecimal addBigdecimal5 = new BigDecimal(1.2256); // 四舍五入 addBigdecima3 = addBigdecima3.setScale(3, BigDecimal.ROUND_HALF_UP); System.out.println("ROUND_HALF_UP value:" + addBigdecima3); // ROUND_HALF_UP value:1.226 addBigdecimal4 = addBigdecimal4.setScale(3, BigDecimal.ROUND_HALF_UP); System.out.println("ROUND_HALF_UP value:" + addBigdecimal4); // ROUND_HALF_UP value:1.225 addBigdecimal5 = addBigdecimal5.setScale(3, BigDecimal.ROUND_HALF_UP); System.out.println("ROUND_HALF_UP value:" + addBigdecimal5); // ROUND_HALF_UP value:1.226 } //比较运算 public void compareToBigdecimal(){ //使用string来初始化 BigDecimal compareValue1 = new BigDecimal("1.00"); //使用double来初始化 BigDecimal compareValue2 = new BigDecimal(1); //使用equals,equals会比较类型和值 System.out.println("equals result:"+compareValue1.equals(compareValue2)); //equals result:false //使用compareto,只比较值 System.out.println("equals result:"+(compareValue1.compareTo(compareValue2) == 0)); //compareTo result:true } public static void main(String[] args) { TestBigdecimal testBigdecimal = new TestBigdecimal(); testBigdecimal.bigdecimalConstruct(); testBigdecimal.calculateBigdecimal(); testBigdecimal.scaleBigdecimal(); testBigdecimal.compareToBigdecimal(); }}
0 0
- Bigdecimal使用实践
- Bigdecimal 使用
- BigDecimal使用
- 使用java.math.BigDecimal
- BigDecimal的使用
- BigDecimal 的使用
- Java BigDecimal使用
- BigDecimal的使用
- BigDecimal类的使用
- java BigDecimal的使用
- BigDecimal使用注意
- BigDecimal 的使用方式
- BigDecimal的使用
- BigDecimal使用分析
- BigDecimal对象的使用
- BigDecimal类的使用
- BigDecimal的使用
- BigDecimal的使用
- python模块之binascii
- 求一个数列的平均值和总和
- Advanced Installer打包
- 多项式求和
- 设计模式-原型模式
- Bigdecimal使用实践
- 后缀表达式
- 使用Windows命令行启动服务
- qualified name与unqualified name
- nginx.org的Logging to syslog页面翻译
- 剑指offer:用两个栈实现队列、用两个队列实现一个栈(java)
- 第五周项目四(数值转换)
- 虚拟机网络配置
- C语言编译过程详解