金额的计算BigDecimal类

double d = 9.84; 
double d2 = 1.22; 
//注意需要使用BigDecimal(String val)构造方法 
BigDecimal bigDecimal = new BigDecimal(Double.toString(d)); 
BigDecimal bigDecimal2 = new BigDecimal(Double.toString(d2));

//加法 
BigDecimal bigDecimalAdd = bigDecimal.add(bigDecimal2); 
double add = bigDecimalAdd.doubleValue();

//减法 
BigDecimal bigDecimalSubtract = bigDecimal.subtract(bigDecimal2); 
double subtract = bigDecimalSubtract.doubleValue();

//乘法 
BigDecimal bigDecimalMultiply = bigDecimal.multiply(bigDecimal2); 
double multiply = bigDecimalMultiply.doubleValue();

//除法 
int scale = 2;//保留2位小数 
BigDecimal bigDecimalDivide = bigDecimal.divide(bigDecimal2, scale, BigDecimal.ROUND_HALF_UP); 
double divide = bigDecimalDivide.doubleValue();

//格式化 
double format = 12343171.6;

//获取常规数值格式 
NumberFormat number = NumberFormat.getNumberInstance(); 
String str = number.format(format);//12,343,171.6

//获取整数数值格式 
NumberFormat integer = NumberFormat.getIntegerInstance(); 
str = integer.format(format);//如果带小数会四舍五入到整数12,343,172

//获取货币数值格式 
NumberFormat currency = NumberFormat.getCurrencyInstance(); 
currency.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0) 
currency.setMaximumFractionDigits(4);//设置数的小数部分所允许的最大位数(如果超过会四舍五入) 
str = currency.format(format);//¥12,343,171.60

//获取显示百分比的格式 
NumberFormat percent = NumberFormat.getPercentInstance(); 
percent.setMinimumFractionDigits(2);//设置数的小数部分所允许的最小位数(如果不足后面补0) 
percent.setMaximumFractionDigits(3);//设置数的小数部分所允许的最大位数(如果超过会四舍五入) 
str = percent.format(format);//1,234,317,160.00%

金额的计算BigDecimal类的更多相关文章

  1. 货币金额的计算 - Java中的BigDecimal

    在<Effective Java>这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal.,而且使 ...

  2. Java工具类之——BigDecimal运算封装(包含金额的计算方式)

    日常对于金额计算,应该都是用的BigDecimal,  可是苦于没有好的工具类方法,现在贡献一个我正在用的对于数字计算的工具类,项目中就是用的这个,简单粗暴好用,话不多说,代码奉上(该工具类需要引入g ...

  3. 【Java】使用BigDecimal类进行精确小数计算

    在商业计算中(尤其是计算价格)需要使用BigDecimal类来进行精确小数计算,因为用其他类型计算(如double)得到的结果不是精确的! 写个测试类. import org.junit.Test; ...

  4. BigDecimal类(精度计算类)的加减乘除

    BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...

  5. 商业计算中Java高精度计算BigDecimal类

    <Effective Java> 第48条:如果需要精确的答案,请避免使用float和double. 如果我们编译运行下面这个程序会看到什么?public class Test{    p ...

  6. BigDecimal精确计算工具类

    前言 在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算.而这类操作通常都是可预知的,也就是通用的.所以,写了个工具类来方便以后的工 ...

  7. BigDecimal 类的使用

    BigDecimal 类的使用 1.使用 BigDecimal 的原因   由于需要计算金额,所有需要高精度计算,所有需要使用 BigDecimal 类. BigDecimal能够精确的表示一个小数, ...

  8. Java:利用BigDecimal类巧妙处理Double类型精度丢失

    目录 本篇要点 经典问题:浮点数精度丢失 十进制整数如何转化为二进制整数? 十进制小数如何转化为二进制数? 如何用BigDecimal解决double精度问题? new BigDecimal(doub ...

  9. BigDecimal类

    如果需要精确的计算结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作. //========================================== ...

随机推荐

  1. Qt 技巧:去除对话框边框 + 设置窗口可移动和透明

    1.去除对话框标题栏和边框 在构造函数里设置:    this->setWindowFlags(Qt::FramelessWindowHint); Qt::Dialog     (按照对话框的形 ...

  2. linux shell 执行多个命令的方法

    (1)在每个命令之间用:(分号)隔开. (2)在每个命令之间用&&隔开. &&表示:若前一个命令执行成功,才会执行下一个.这样,可确保所有的命令执行完毕后,其执行过程都 ...

  3. 2014ACM/ICPC亚洲区鞍山赛区现场赛1009Osu!

    鞍山的签到题,求两点之间的距离除以时间的最大值.直接暴力过的. A - Osu! Time Limit:1000MS     Memory Limit:262144KB     64bit IO Fo ...

  4. 第三种:NSOperationQueue

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  5. 《C++游戏开发》十八 角色在障碍物中智能行走的实现

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/11621337 作者:七十一雾央 新浪微博:http: ...

  6. ios8.1上运行程序,程序界面只显示一部分

    在ios 9.1上运行程序没问题 但是在8.1上运行发现模拟器上只显示了程序的一小部分界面,没有显示完全. 结果发现由以下代码设置问题引起的 - (BOOL)application:(UIApplic ...

  7. 由zImage生成uImage

    一.手动使用mkimage命令 mkimage -A arm -O linux -T kernel -C none -a 30007fc0 -e 30007fc0 -n uImage   -d /wo ...

  8. arduino电子琴(2015-11-04)

    前言 这是论坛上一个坛友问的问题,想做一个可变音调的电子琴,想着正好练练手,就顺手做一下. 接线图

  9. CUDA纹理绑定

    纹理绑定的一般步骤: size_t fea_pitch; texture<unsigned char, 2> features2D; cudaMallocPitch((void**)(&a ...

  10. Python 第十一篇:开发堡垒机

    一:SqlAlchemy ORM ORM:Object Relational Mapping 对象关系映射是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 SQLAlchemy是 ...