金额的计算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%

时间: 2024-12-07 09:50:16

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

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

float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal.,而且使用BigDecimal类也可以进行大数的操作.具体参见API 编号 方法 类型 描述 1 public BigDecimal(double val)   构造 将double表示形式转化为BigDecimal 2 public BigDecimal(int val)  构造 将int表示形式转化为BigDecimal 3 public BigDecimal(Strin

java之BigDecimal类

1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类 BigDecimal类是不可变得.任意精度的有符号是进制数 2.构造方法及成员方法 package com; import java.math.BigDecimal; /**  * BigDecimal类  * 由于在运算的时候,float类型和double类型很容易丢失精度.所以,为了能精确的表示.计算浮点数.

BigDecimal类

为了能精确表示,计算浮点数,java提供了BigDecimal类,该类提供了大量的构造器用于创建BigDecimal对象,包括 把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串,数字字符数组来创建BigDecimal对象 BigDecimal类提供了add()方法,subtract(),multiply(),divide(),pow()方法对精确浮点数进行常规算术运算 public class BigDecimalTest{ public static void m

BigDecimal类的加减乘除

BigDecimal类的加减乘除 转自:http://blog.sina.com.cn/s/blog_6a0cd5e501011soa.html BigDecimal类型(+ - * /)所用的属性 11.10 BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作.BigDecimal类的常用方法如表11-15所示. 表11-15 BigDec

Java API —— BigDecimal类

1.BigDecimal类概述  由于在运算的时候,float类型和double很容易丢失精度,演示案例.所以,为了能精确的表示.计算浮点数,Java提供了BigDecimal 不可变的.任意精度的有符号十进制数. 2.构造方法 public BigDecimal(String val):建议使用参数为字符串的构造方法,如果参数为double或float,还是会出现不可预知的精度问题 3.BigDecimal类成员方法 public BigDecimal add(BigDecimal augen

Math类和BigInteger:/BigDecimal类

Math类:提供了简单计算的数学计算工具类 1:public static Xxx abs(Xxx xx)  求绝对值 2:public static double ceil(double a)  天花板  向上取整 3:public static double floor(double a)  地板  向下取整 4:public static double pow(double a, double b)  a^b  第一个数的第二个数次幂 5:public static double rand

BigIntager类和BigDecimal类

BigInteger类 BigInteger:可以让超过Integer范围内的数据进行运算 构造方法:      BigInteger(String val) 代码示例:BigInteger bi = new BigInteger("2147483648"); 成员方法: (1)public BigInteger add(BigInteger val):加     (2)public BigInteger subtract(BigInteger val):减     (3)public

精确计算工具类,提供加减乘除的计算

package com.ljq.util; import java.math.BigDecimal; /** * 精确计算工具类,提供加减乘除的计算 * * @author jqlin */ public class CompuUtils { /**小数点后保留的位数*/ public final static int SCALE = 5; /** 0 */ public final static int ZERO = 0; /** * BigDecimal大小比较 * * @param a *

java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定

一. 计算机的小数计算一定范围内精确,超过范围只能取近似值: 计算机存储的浮点数受存储bit位数影响,只能保证一定范围内精准,超过bit范围的只能取近似值. java中各类型的精度范围参见:http://blog.csdn.net/longshenlmj/article/details/47616481 编程时注意: doulbe类型的数,不能用等号判定是否相等(或者是一定范围内可以).因为两次同样的计算(除法)结果可能出现小数部分不同.甚至极端的时候,初始化两个小数时,都可能不相等(用数值和字