BigDecimal自学笔记

public class DoubleTest1 {
public static void main(String[] args) {
System.out.println("0.05+0.01="+(0.05+0.01));
System.out.println("1.0-0.42="+(1.0-0.42));
System.out.println("4.015*100="+(4.015*100));
System.out.println("123.3/100="+(123.3/100));
}
}
运行结果：

0.05+0.01=0.060000000000000005

1.0-0.42=0.5800000000000001

4.015*100=401.49999999999994

123.3/100=1.2329999999999999

import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal f1 = new BigDecimal("0.05");
BigDecimal f2 = BigDecimal.valueOf(0.01);
BigDecimal f3 = new BigDecimal(0.05);

System.out.println("使用String作为BigDecimal构造器参数：");
System.out.println("0.05 + 0.01 = " + f1.add(f2));
System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
System.out.println("0.05 / 0.01 = " + f1.divide(f2));

System.out.println("使用double作为BigDecimal构造器：");
System.out.println("0.05 + 0.01 = " + f3.add(f2));
System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
System.out.println("0.05 / 0.01 = " + f3.divide(f2));
}
}

0.05 + 0.01 = 0.06

0.05 - 0.01 = 0.04

0.05 * 0.01 = 0.0005

0.05 / 0.01 = 5

0.05 + 0.01 = 0.06000000000000000277555756156289135105907917022705078125

0.05 - 0.01 = 0.04000000000000000277555756156289135105907917022705078125

0.05 * 0.01 = 0.0005000000000000000277555756156289135105907917022705078125

0.05 / 0.01 = 5.000000000000000277555756156289135105907917022705078125

package hb.bigdecimal;
import java.math.BigDecimal;

public class BigDecimalDemo {

public static void main(String[]args){
double v1 = 3.5;
double v2 = 0.7;
//		BigDecimal result = add(v1, v2);
//		BigDecimal result = sub(v1, v2);
//		BigDecimal result = mul(v1, v2);
BigDecimal result = div(v1, v2);
System.out.println(result);

BigDecimal a = new BigDecimal(998.01);
BigDecimal a1 = BigDecimal.valueOf(998.01);
BigDecimal b=new BigDecimal("100");
System.out.println(a.multiply(b));
System.out.println(a1.multiply(b));  //期望值一样

BigDecimal aa = new BigDecimal(135.95);
BigDecimal aa1 = new BigDecimal("135.95");
BigDecimal bb=new BigDecimal("100");
System.out.println(aa.multiply(bb));
System.out.println(aa1.multiply(bb));   //期望值一样

BigDecimal test = new BigDecimal(4.015);
BigDecimal test2 = BigDecimal.valueOf(4.015);
BigDecimal test1 = new BigDecimal(100);
System.out.println(test.multiply(test1));
System.out.println(test2.multiply(test1)); //期望值一样

BigDecimal aa11 = new BigDecimal(135.95);
BigDecimal aa12 = new BigDecimal("135.95");
BigDecimal bb1=new BigDecimal("100");
BigDecimal result1=aa11.multiply(bb1);
BigDecimal result2=aa12.multiply(bb1);  //期望值一样
//将这个BigDecimal小数点后保留2位，四舍五入的方式为向最接近数字方向舍入的舍入模式，如果与两个相邻数字的距离相等，则向相邻的偶数舍入
System.out.println(result1.setScale(2,BigDecimal.ROUND_HALF_EVEN));
System.out.println(result2.setScale(2,BigDecimal.ROUND_HALF_EVEN));

}

/**
* 用第一个数除以第二个数
* 提供精确的除法运算 当除不尽时，精确到小数点后10位，以后的数字四舍五入
* @param v1
* @param v2
* @return
*/
public static BigDecimal div(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
//13表示小数点后面精确到多少位
return b1.divide(b2, 13, BigDecimal.ROUND_HALF_UP);
}

/**
* 连个数相乘
* @param v1
* @param v2
* @return
*/
public static BigDecimal mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2);
}

/**
* 计算第一个数减去第二个数
* @param v1
* @param v2
* @return
*/
public static BigDecimal sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2);
}

/**
* 计算两个数相加
* @param v1
* @param v2
* @return
*/
public static BigDecimal add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
}
}


运行结果：

5.0000000000000

99800.999999999999090505298227071762084960937500

99801.00

13594.99999999999886313162278383970260620117187500

13595.00

401.49999999999996802557689079549163579940795898437500

401.500

13595.00

13595.00

STM32自学笔记

2013年03月13日 35.86MB 下载

2018.3.8自学笔记

2018-03-08 22:16:05

FPGA自学笔记--设计与验证

2018年04月23日 11.07MB 下载

【经典】STM32自学笔记（完整扫描版）

2013年03月08日 35.85MB 下载

AVR单片机自学笔记

2016年01月19日 31.56MB 下载

学习笔记2018-1-7

2018-01-07 21:20:00

MSP430单片机自学笔记

2013年07月12日 8.31MB 下载

stm8单片机自学笔记

2018年03月13日 174.08MB 下载

《Cortex-M4自学笔记-基于Kinetis K60》配套材料

2015年03月08日 26.22MB 下载

2018.3.6自学笔记

2018-03-06 20:53:48

BigDecimal自学笔记