BigDecimal 方法使用汇总

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;
import java.math.RoundingMode;

/**
 * BigDecimal方法
 *
 * @author ZhouAJ
 */
public class BigDecimalTest {
    public static void main(String[] args) {
        BigDecimal b1 = BigDecimal.valueOf(4.5);
        BigDecimal b2 = BigDecimal.valueOf(5.3);
        BigDecimal b0 = BigDecimal.valueOf(0);
        BigDecimal b3 = BigDecimal.valueOf(1.3);
        BigDecimal b4 = BigDecimal.valueOf(-122.22);
        BigDecimal b5 = BigDecimal.valueOf(-1131312.613213289);
        BigDecimal b6 = BigDecimal.valueOf(130000.000);

        System.out.println("add()方法 加法:");
        BigDecimal add = b1.add(b3);
        System.out.println(add + "\n");

        System.out.println("subtract() 减法:");
        BigDecimal subtract = b1.subtract(b3);
        System.out.println(subtract + "\n");

        System.out.println("multiply() 乘法,并且设置向上四舍五入:");
        BigDecimal multiply = b1.multiply(b2, MathContext.UNLIMITED);
        System.out.println(multiply + "\n");

        System.out.println("divide() 除法 RoundingMode.HALF_UP四舍五入:");
        BigDecimal divide = b1.divide(b2, RoundingMode.HALF_UP);
        System.out.println(divide + "\n");

        System.out.println("remainder() 求余 等效 % :");
        BigDecimal remainder = b1.remainder(b2);
        System.out.println(remainder + "\n");

        System.out.println("divideAndRemainder() 商与余数:例子:4/1.3 = 3 余下0.1 这个等与是除和求余的结合体:");
        BigDecimal[] bigDecimals = b1.divideAndRemainder(b3);
        System.out.println("余数:" + bigDecimals[0]);
        System.out.println("商:" + bigDecimals[1] + "\n");

        System.out.println("pow(int) 次方 int填写是几次方 这里结果是b1的3次方:");
        BigDecimal pow = b1.pow(3);
        System.out.println(pow + "\n");

        System.out.println("sqrt() 平方根:");
        BigDecimal sqrt = b1.sqrt(MathContext.DECIMAL32);
        System.out.println(sqrt + "\n");

        System.out.println("abs() 绝对值:");
        BigDecimal abs = b4.abs();
        System.out.println(abs + "\n");

        System.out.println("round(MathContext.UNLIMITED) 四舍五入用的,可以设置是否保留几位小数的规则:");
        BigDecimal round = b5.round(MathContext.DECIMAL32);
        System.out.println(round + "\n");

        System.out.println("scale() 获取小数位数,但是超过10就只能显示10了,只能计算10以内的位数:");
        int scale = b5.scale();
        System.out.println(scale + "\n");

        System.out.println("setScale() 设置保留几位小数 设置8保留 8位小数并且四舍五入");
        BigDecimal bigDecimal = b5.setScale(8, MathContext.UNLIMITED.getPrecision());
        System.out.println(bigDecimal + "\n");

        System.out.println("compareTo() 比较前一个数是否比后一个数大,1是大,-1是小,0是相等:");
        int i = b1.compareTo(b2);
        System.out.println(i + "\n");

        System.out.println("negate() 返回其整数部分+小数部分长度设置为MathContext.DECIMAL32是默认四舍五入的:");
        BigDecimal negate = b5.negate(MathContext.DECIMAL32);
        System.out.println(negate + "\n");

        System.out.println("floatValue() BigDecimal转为单精度float:");
        float f = b1.floatValue();
        System.out.println(f + "\n");

        System.out.println("doubleValue() BigDecimal转为双精度double:");
        double d = b1.doubleValue();
        System.out.println(d + "\n");

        System.out.println("toEngineeringString() 将小数以字符串形式返回:");
        String str = b1.toEngineeringString();
        System.out.println(str + "\n");

        System.out.println("toBigInteger() 转为整数:(依据强转整型的形式,直接舍弃小数部分):");
        BigInteger bigInteger = b1.toBigInteger();
        System.out.println(bigInteger + "\n");

        System.out.println("longValue() 转为long同样要舍弃小数:");
        long l = b1.longValue();
        System.out.println(l + "\n");

        System.out.println("longValueExact() 转为long的时候,有小数,且小数不是0的情况下会报算数异常:");
        long l1 = b6.longValueExact();
        System.out.println(l1 + "\n");

        System.out.println("max(BigDecimal bigDecimal) 两个数比较取最大值,返回最大值:");
        BigDecimal max = b1.max(b2);
        System.out.println(max + "\n");

        System.out.println("min(BigDecimal bigDecimal) 两个数比较取最小值,返回最小值:");
        BigDecimal min = b1.min(b2);
        System.out.println(min + "\n");

        System.out.println("signum() 判断这个数是正数还是负数,1为正,-1为负,0为0");
        int sigNum = b0.signum();
        System.out.println(sigNum + "\n");

        System.out.println("precision() 返回当前数字的精度 就是几位数,0是1 其他的就按照正常的个数算:");
        int precision = b5.precision();
        System.out.println(precision + "\n");

        System.out.println("movePointLeft()方法 小数点右移动n个点:");
        BigDecimal Left = b1.movePointLeft(2);
        System.out.println(Left + "\n");

        System.out.println("movePointRight()方法 小数点左移动n个点");
        BigDecimal Right = b1.movePointRight(2);
        System.out.println(Right + "\n");

        System.out.println("toPlainString() 区别于toString 和 toEngineeringString,toPlainString是完整返回BigDecimal的值:");
        String s = b5.toPlainString();
        System.out.println(s + "\n");

        System.out.println("unscaledValue() 返回全部有效数字,但是去调小数点");
        BigInteger bigInteger1 = b5.unscaledValue();
        System.out.println(bigInteger1);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值