java对于价格的计算
//乘
public double getMultiply(double x,double y){
BigDecimal x1 = new BigDecimal(Double.valueOf(x));
BigDecimal y1 = new BigDecimal(Double.valueOf(y));
return x1.multiply(y1).doubleValue();
}
//除
public double getDivide(double x,double y){
BigDecimal x1 = new BigDecimal(Double.valueOf(x));
BigDecimal y1 = new BigDecimal(Double.valueOf(y));
return x1.divide(y1,3,BigDecimal.ROUND_HALF_UP).doubleValue();
}
例⼦:
/**
* 根据应收⾦额 dcost, 和dCash实收现⾦计算零多少
* @param dCash
*            现⾦
* @param dCost
*            ⾦额
*/
public static void printChange( doubledCash , double dCost ) {
if (dCash < 0 || dCost < 0 ||dCash < dCost) {
return;
}
DecimalFormat format = newDecimalFormat("0.00");
//System.out.println(format.format(dCash));
//System.out.println(format.format(dCost));//⽤于对double类型数据的数据⼩数点后⼏位指定
/*
* 对于⾦额使⽤BigDecimal处理,可以截尾
* 在需要精确答案的地⽅,要避免使⽤float和double;对于货币计算,使⽤int,long或BigDecimal会更好.        */
BigDecimal bigDecimal = newBigDecimal(format.format(dCash));
BigDecimal decimal = bigDecimal
.subtract(newBigDecimal(format
.format(dCost)));//需要的钱
//System.out.println(decimal.doubleValue());
double charges[] = { 100, 50, 20, 10,5, 2, 1, 0.5, 0.2, 0.1, 0.05,
0.02, 0.01 };
double money = decimal.doubleValue();//获取零的⾦额,
// System.out.println(money);
int chargesNum[] = newint[charges.length];
for (int i = 0; i < charges.length;i++)
chargesNum[i] = 0;// 记录每⼀个⾯额的纸币有多少长
int i = 0;
while (money > 0) {
while (charges[i] > money)
i++;
money -= charges[i];
money =Double.valueOf(format.format(money)).doubleValue();// 对减去⼀个浮点型数字后进⾏⼩数点格式化,格式化带两个⼩数点的实数。
System.out.println(money);
chargesNum[i] += 1;
}
// 把零的数字输出
System.out.print("零⾦额:" + decimal.doubleValue() +" :");
for (int j = 0; j <chargesNum.length; j++) {
java valueof
if (chargesNum[j] > 0) {
if (j < 7) {
System.out.print(chargesNum[j] + "张" + charges[j] + "元  ");
} else if (j < 10) {
System.out.print(chargesNum[j] + "张" + charges[j] + "⾓  ");
} else {
System.out.print(chargesNum[j] + "张" + charges[j] + "分  ");
}
}
}
}
printChange(5,1.11);
输出结果:
1.89
0.89
0.39
0.19
0.09
0.04
0.02
0.0
零⾦额:3.89 :1张2.0元  1张1.0元  1张0.5⾓  1张0.2⾓  1张0.1⾓  1张0.05分  2张0.02分
关于使⽤BigDecimal类来进⾏计算的时候,主要分为以下步骤:
1、⽤float或者double变量构建BigDecimal对象。
2、通过调⽤BigDecimal的加,减,乘,除等相应的⽅法进⾏算术运算。
3、把BigDecimal对象通过相应xxxValue()⽅法的转换成float,double,int等类型。
创建BigDecimal实例可以使⽤BigDecimal的构造⽅法或者静态⽅法的valueOf()⽅法把基本类型的变量构建成BigDecimal对象。
对于加减乘除算术运算提供了⼯具⽅法
public BigDecimaladd(BigDecimal value);        //加法
2 public BigDecimalsubtract(BigDecimal value);  //减法
3 public BigDecimalmultiply(BigDecimal value);    //乘法
4 public BigDecimaldivide(BigDecimal value);      //除法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。