关于BigDecimal 的计算】的更多相关文章

前言 在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算.而这类操作通常都是可预知的,也就是通用的.所以,写了个工具类来方便以后的工作. 这是仓库地址:仓库地址 BigDecimal的构建 一般而言,我们主要从int,long,double,float来进行计算,在构建的时候推荐使用 BigDecimal BigDecimal(String s); 因为通过double构造会损失精度,而String构造是固定的值. 创建以下方法…
BigDecimal 构造方式主要包括4种: 支持double.int.long等类型计算,废话少说,直接上代码 import java.math.BigDecimal; public class BigDecimalUtil{ //几种类型的声明 //String BigDecimal bd1 = new BigDecimal("11111"); //int BigDecimal bd2 = new BigDecimal(11111); //long BigDecimal bd3 =…
由于工作需要,写了一个使用BigDecimal运算的精确计算的计算器(然后发现其实比不用BigDecimal的并好不到哪里去) 只能做加减乘除 double类型的数字在千万级别的时候会转成科学计数法,我这个不会(我估计能有方法不以科学计数法显示) 其中用到的知识就是中缀表达式转后缀表达式,我是从这里学的: http://www.cnblogs.com/mygmh/archive/2012/10/06/2713362.html 下面上代码吧: 这个方法需要一个参数,String类型公式,形如:"1…
BigDecimal通常在涉及到精确计算的时候会用到,下面是自己多次错误使用BigDecimal的总结. 结论: BigDecimal初始化小数时,尽量用字符串形式,例如new BigDecimal("0.1"); BigDecimal类型变量比较大小时用compareTo方法,判断变量值是否为0,与BigDecimal.ZERO比较大小. BigDecimal作除法时,除了要考虑除数是否为0,更要考虑是否能除尽的问题,直接调用BigDecimal divide(BigDecimal…
一.简述 java.math.BigDecimal不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值(unscaledValue)和32位的整数标度(scale)组成.其值为该数的非标度值乘以10的负scale次幂,即为(unscaledValue * 10-scale).与之相关的还有两个类: java.math.MathContext该对象是封装上下文设置的不可变对象,它描述数字运算符的某些规则,如数据的精度,舍入方式等. java.math.Rounding…
package com.wzh.test; import java.math.BigDecimal; public class test { /** * @param args */ public static void main(String[] args) { // double a=0.1; // double b=0.006; // System.out.println(a+b); BigDecimal a=new BigDecimal("0.1235235235263236236236…
在<Effective Java>这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal.,而且使用BigDecimal类也可以进行大数的操作. 表11-15 BigDecimal类的常用方法,具体参考API http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/latest/html/zh_CN/api/ 序号 方…
<Effective Java> 第48条:如果需要精确的答案,请避免使用float和double. 如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.println(4.015*100);    …
BigDecimal类 BigDecimal所在包:java.math,不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成. 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作 dobule例子 public class TestMath { public static void main…
货币金额的计算 - Java中的BigDecimal   在<Effective Java>这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal.,而且使用BigDecimal类也可以进行大数的操作. 表11-15 BigDecimal类的常用方法,具体参考API http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/build…