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); } }
BigDecimal 方法使用汇总
最新推荐文章于 2023-05-14 17:58:53 发布