我是靠谱客的博主 冷傲荔枝,最近开发中收集的这篇文章主要介绍Java BigDecimal的方法介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

    • BigDecimal的方法介绍
      • valueOf
      • add
      • subtract
      • multiply
      • devide
      • divideToIntegralValue
      • remainder
      • divideAndRemainder
      • sqrt
      • pow
      • abs
      • negate
      • plus
      • signum
      • scale
      • precision
      • unscaledValue
      • round
      • setScale
      • movePointLeft
      • movePointRight
      • scaleByPowerOfTen
      • stripTrailingZeros
      • compareTo
      • equals
      • min
      • max
      • hashCode
      • toString
      • toEngineeringString
      • toPlainString
      • toBigInteger longValue intValue floatValue doubleValue
      • toBigIntegerExact longValueExact intValueExact shortValueExact byteValueExact
      • ulp

BigDecimal的方法介绍

本文使用的是jdk11的版本

valueOf

参数要求:
public static BigDecimal valueOf​(long unscaledVal, int scale)
public static BigDecimal valueOf​(long val)
public static BigDecimal valueOf​(double val)

方法作用:
如果是一个long类型或一个double类型的参数,通过这个方法可以将其转化位一个BigDecimal的类型。
如果输入了一个long类型,又输入了一个int类型的参数a,得到的结果是这个long类型数乘以10的负a次方之后用科学计数法计数的结果。

代码示例:

        BigDecimal bdtest1 = BigDecimal.valueOf(8.25);
        BigDecimal bdtest2 = BigDecimal.valueOf(500L);
        BigDecimal bdtest3 = BigDecimal.valueOf(50L,3);
        BigDecimal bdtest4 = BigDecimal.valueOf(5L,5);

        System.out.println("bdtest1 = " + bdtest1);
        System.out.println("bdtest2 = " + bdtest2);
        System.out.println("bdtest3 = " + bdtest3);
        System.out.println("bdtest4 = " + bdtest4);

代码结果:
BigDecimal的valueOf方法

add

参数要求:
public BigDecimal add​(BigDecimal augend)
public BigDecimal add​(BigDecimal augend, MathContext mc)

方法作用:
两个BigDecimal类型的数相加,或者以某种精度要求相加

代码示例:

        BigDecimal bdTest1 = new BigDecimal("10000");
        BigDecimal bdTest2 = new BigDecimal(500.005);
        BigDecimal bdTest3 = new BigDecimal("500.005");

        BigDecimal addTest1 = bdtest1.add(bdTest2);
        BigDecimal addTest2 = bdtest1.add(bdTest3);
        BigDecimal addTest3 = bdtest1.add(bdTest3,new MathContext(7));

        System.out.println("addtest1 = " + addTest1);
        System.out.println("addtest2 = " + addTest2);
        System.out.println("addtest3 = " + addTest3);

代码结果图示:
BigDecimal的add方法
还是可以看出double的值是很不准确的…

subtract

参数要求:
public BigDecimal subtract​(BigDecimal subtrahend)
public BigDecimal subtract​(BigDecimal subtrahend, MathContext mc)

方法作用:
让两个BigDecimal的值相减,如果是A.subtract(B),则结果是A-B。如果加入MathContext,那么会控制结果的精度。

代码示例:

        BigDecimal bdTest1 = new BigDecimal("50");
        BigDecimal bdTest2 = new BigDecimal(47.965);
        BigDecimal bdTest3 = new BigDecimal("47.965");

        BigDecimal test1 = bdTest1.subtract(bdTest2);
        BigDecimal test2 = bdTest1.subtract(bdTest3);
        BigDecimal test3 = bdTest1.subtract(bdTest3,new MathContext(3));

        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);
        System.out.println("test3 = " + test3);

代码结果图示:
BigDecimal减法操作

multiply

参数要求:
public BigDecimal multiply​(BigDecimal multiplicand)
public BigDecimal multiply​(BigDecimal multiplicand, MathContext mc)

方法作用:
获得两个BigDecimal类型的数相乘的结果,两个参数的话第二个参数是对结果的精度以及四舍五入进行规定。

代码示例:

        BigDecimal bdTest1 = new BigDecimal("5");
        BigDecimal bdTest2 = new BigDecimal(4.55);
        BigDecimal bdTest3 = new BigDecimal("4.55");

        BigDecimal test1 = bdTest1.multiply(bdTest2);
        BigDecimal test2 = bdTest1.multiply(bdTest3);
        BigDecimal test3 = bdTest1.multiply(bdTest3,new MathContext(3));

        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);
        System.out.println("test3 = " + test3);

代码结果图示:
BigDecimal的乘法操作
可以看出来就算使用BigDecimal类型进行操作,但是输入的参数类型如果是double那么最终结果也可能会出现大问题。

devide

参数要求:
1.public BigDecimal divide​(BigDecimal divisor, int scale, RoundingMode roundingMode)
2.public BigDecimal divide​(BigDecimal divisor, RoundingMode roundingMode)
3.public BigDecimal divide​(BigDecimal divisor)
4.public BigDecimal divide​(BigDecimal divisor, MathContext mc)

方法作用:
4个方法构造分别是:
1.规定四舍五入标准,给定小数点后的位数,得到this/divide
2.规定四舍五入标准,得到this/divide
3.得到this/divide
4.通过MathContext规定四舍五入标准以及精度,得到this/divide

代码示例:

        BigDecimal bdTest1 = new BigDecimal("50");
        BigDecimal bdTest2 = new BigDecimal("3");

        //第一种形式
        BigDecimal test1 = bdTest1.divide(bdTest2,5,RoundingMode.UP);
        //第二种形式
        BigDecimal test2 = bdTest1.divide(bdTest2,RoundingMode.UP);
        //第三种形式
        BigDecimal test3 = bdTest1.divide(new BigDecimal(25));
        //第四种形式
        BigDecimal test4 = bdTest1.divide(bdTest2,new MathContext(4));

        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);
        System.out.println("test3 = " + test3);
        System.out.println("test4 = " + test4);

代码结果图示:
BigDecimal的除法操作
这里我们可以看到第三个方法我改变了数值,因为这个方法使用其他方法的数据时出现了错误,于是我想着对这个错误研究一下 下面的是报错提示
错误时的代码:

        BigDecimal bdTest1 = new BigDecimal("50");
        BigDecimal bdTest2 = new BigDecimal("3");

        //第一种形式
        BigDecimal test1 = bdTest1.divide(bdTest2,5,RoundingMode.UP);
        //第二种形式
        BigDecimal test2 = bdTest1.divide(bdTest2,RoundingMode.UP);
        //第三种形式
        BigDecimal test3 = bdTest1.divide(bdTest2);//167行
        //第四种形式
        BigDecimal test4 = bdTest1.divide(bdTest2,new MathContext(4));

        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);
        System.out.println("test3 = " + test3);
        System.out.println("test4 = " + test4);

错误图示:
BigDecimal除法错误
根据源码的阅读,我发现他一开始判断了除数与被除数是否为0之外,还判断结果是否为一个无限循环的小数,如果无限循环就会报上面的错误。
源码:

    public BigDecimal divide(BigDecimal divisor) {
        /*
         * Handle zero cases first.
         */
        if (divisor.signum() == 0) {   // x/0
            if (this.signum() == 0)    // 0/0
                throw new ArithmeticException("Division undefined");  // NaN
            throw new ArithmeticException("Division by zero");
        }

        // Calculate preferred scale
        int preferredScale = saturateLong((long) this.scale - divisor.scale);

        if (this.signum() == 0) // 0/y
            return zeroValueOf(preferredScale);
        else {
            /*
             * If the quotient this/divisor has a terminating decimal
             * expansion, the expansion can have no more than
             * (a.precision() + ceil(10*b.precision)/3) digits.
             * Therefore, create a MathContext object with this
             * precision and do a divide with the UNNECESSARY rounding
             * mode.
             */
            MathContext mc = new MathContext( (int)Math.min(this.precision() +
                                                            (long)Math.ceil(10.0*divisor.precision()/3.0),
                                                            Integer.MAX_VALUE),
                                              RoundingMode.UNNECESSARY);
            BigDecimal quotient;
            try {
                quotient = this.divide(divisor, mc);
            } catch (ArithmeticException e) {
                throw new ArithmeticException("Non-terminating decimal expansion; " +
                                              "no exact representable decimal result.");
            }

            int quotientScale = quotient.scale();

            // divide(BigDecimal, mc) tries to adjust the quotient to
            // the desired one by removing trailing zeros; since the
            // exact divide method does not have an explicit digit
            // limit, we can add zeros too.
            if (preferredScale > quotientScale)
                return quotient.setScale(preferredScale, ROUND_UNNECESSARY);

            return quotient;
        }
    }

divideToIntegralValue

参数要求:
public BigDecimal divideToIntegralValue​(BigDecimal divisor)
public BigDecimal divideToIntegralValue​(BigDecimal divisor, MathContext mc)

方法作用:
返回this/divisor的整数值

代码示例:

        BigDecimal bdTest1 = new BigDecimal("7000");
        BigDecimal bdTest2 = new BigDecimal("7");

        BigDecimal test1 = bdTest1.divideToIntegralValue(bdTest2);
        BigDecimal test2 = bdTest1.divideToIntegralValue(bdTest2,new MathContext(2));

        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);

代码结果图示:
BigDecimal除法保留整数结果

remainder

参数要求:
public BigDecimal remainder​(BigDecimal divisor)
public BigDecimal remainder​(BigDecimal divisor, MathContext mc)

方法作用:
取模运算,结果为this%divisor,有些时候结果为负数
代码示例:

        BigDecimal bdTest1 = new BigDecimal("50");
        BigDecimal bdTest2 = new BigDecimal("40");
        BigDecimal bdTest3 = new BigDecimal("-50");
        BigDecimal bdTest4 = new BigDecimal("-40");

        BigDecimal test1 = bdTest1.remainder(bdTest2);
        BigDecimal test2 = bdTest1.remainder(bdTest4);
        BigDecimal test3 = bdTest3.remainder(bdTest2);
        BigDecimal test4 = bdTest3.remainder(bdTest4);
        BigDecimal test5 = bdTest1.remainder(bdTest2,new MathContext(1));

        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);
        System.out.println("test3 = " + test3);
        System.out.println("test4 = " + test4);
        System.out.println("test5 = " + test5);

代码结果图示:
BigDecimal取模运算

divideAndRemainder

参数要求:
public BigDecimal[] divideAndRemainder​(BigDecimal divisor)
public BigDecimal[] divideAndRemainder​(BigDecimal divisor, MathContext mc)

方法作用:
返回一个BigDecimal的两位数组,第一个数存储整数的除结果,第二个数存储模的值
代码示例:

        BigDecimal bdTest1 = new BigDecimal("50");
        BigDecimal bdTest2 = new BigDecimal("40");

        BigDecimal[] test = bdTest1.divideAndRemainder(bdTest2);
        BigDecimal[] test2 = bdTest1.divideAndRemainder(bdTest2,new MathContext(1));


        for (BigDecimal b:test) {
            System.out.println(b);
        }

        for (BigDecimal b:test2) {
            System.out.println(b);
        }

代码结果图示:
BigDecimal取余除得到数组

sqrt

参数要求:
public BigDecimal sqrt​(MathContext mc)

方法作用:
根据精度以及四舍五入的设置获得BigDecimal的开方

代码示例:

        BigDecimal bdTest1 = new BigDecimal("225");

        BigDecimal test = bdTest1.sqrt(new MathContext(2));
        BigDecimal test1 = bdTest1.sqrt(new MathContext(1));

        System.out.println("test = " + test);
        System.out.println("test1 = " + test1);

代码结果图示:
BigDecimal开方

pow

参数要求:
public BigDecimal pow​(int n)
public BigDecimal pow​(int n, MathContext mc)

方法作用:
计算BigDecimal的n次方

代码示例:

        BigDecimal bdTest1 = new BigDecimal("2");
        BigDecimal test = bdTest1.pow(2);
        BigDecimal test1 = bdTest1.pow(10);
        BigDecimal test2 = bdTest1.pow(10,new MathContext(3));
        System.out.println("test = " + test);
        System.out.println("test1 = " + test1);
        System.out.println("test2 = " + test2);

代码结果图示:
BigDecimal的n次方运算

abs

参数要求:
public BigDecimal abs()
public BigDecimal abs​(MathContext mc)

方法作用:
获得BigDecimal类型值的绝对值

代码示例:

        BigDecimal bdTest1 = new BigDecimal("2.555");
        BigDecimal bdTest2 = new BigDecimal("-2");

        System.out.println(bdTest1.abs());
        System.out.println(bdTest2.abs());
        System.out.println(bdTest1.abs(new MathContext(3)));

代码结果图示:
BigDecimal取绝对值

negate

参数要求:
public BigDecimal negate()
public BigDecimal negate​(MathContext mc)

方法作用:
为BigDecimal类型值添加负号

代码示例:

        BigDecimal bdTest1 = new BigDecimal("2.555");
        BigDecimal bdTest2 = new BigDecimal("-2");

        System.out.println(bdTest1.negate());
        System.out.println(bdTest2.negate());
        System.out.println(bdTest1.negate(new MathContext(3)));

代码结果图示:
BigDecimal取反

plus

参数要求:
public BigDecimal plus()
public BigDecimal plus​(MathContext mc)

方法作用:
返回自己 源码如下:

    public BigDecimal plus() {
        return this;
    }

代码示例:

        BigDecimal bdTest1 = new BigDecimal("2.555");
        BigDecimal bdTest2 = new BigDecimal("-2");

        System.out.println(bdTest1.plus());
        System.out.println(bdTest2.plus());
        System.out.println(bdTest1.plus(new MathContext(3)));

代码结果图示:
BigDecimal plus函数

signum

参数要求:
public int signum()

方法作用:
根据数的正负返回1,-1,0

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2");
        BigDecimal bdTest3 = new BigDecimal("0");

        System.out.println(bdTest1.signum());
        System.out.println(bdTest2.signum());
        System.out.println(bdTest3.signum());

代码结果图示:
BigDecimal的signum方法

scale

参数要求:
public int scale()

方法作用:
返回BigDecimal小数点后有几位数。

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.scale());
        System.out.println(bdTest2.scale());
        System.out.println(bdTest3.scale());

代码结果图示:
BigDecimal的scale方法

precision

参数要求:
public int precision()

方法作用:
返回BigDecimal的精度

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.precision());
        System.out.println(bdTest2.precision());
        System.out.println(bdTest3.precision());

代码结果图示:
BigDecimal的精度

unscaledValue

参数要求:
public BigInteger unscaledValue()

方法作用:
返回没有小数点的BigDecimal值
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.unscaledValue());
        System.out.println(bdTest2.unscaledValue());
        System.out.println(bdTest3.unscaledValue());

代码结果图示:
BigDecimal的unscaledValue函数

round

参数要求:
public BigDecimal round​(MathContext mc)

方法作用:
根据MathContext四舍五入

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.round(new MathContext(3)));
        System.out.println(bdTest2.round(new MathContext(2)));
        System.out.println(bdTest3.round(new MathContext(1)));

代码结果图示:
BigDecimal的四舍五入

setScale

参数要求:
public BigDecimal setScale​(int newScale, RoundingMode roundingMode)
public BigDecimal setScale​(int newScale)

方法作用:
为BigDecimal设定新的小数点后的位数

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.setScale(2,RoundingMode.FLOOR));
        System.out.println(bdTest2.setScale(2,RoundingMode.UP));
        System.out.println(bdTest3.setScale(2));

代码结果图示:
setScale BigDecimal
注意不写RoundingMode的形式默认是UNNECESSARY模式,如果精度不对应会报错。

movePointLeft

参数要求:
public BigDecimal movePointLeft​(int n)

方法作用:
让BigDecimal数字的小数点向左移动

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.movePointLeft(2));
        System.out.println(bdTest2.movePointLeft(2));
        System.out.println(bdTest3.movePointLeft(2));

代码结果图示:
BigDecimal小数点左移动

movePointRight

参数要求:
public BigDecimal movePointRight​(int n)

方法作用:
让BigDecimal数字的小数点向右移

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.movePointRight(2));
        System.out.println(bdTest2.movePointRight(2));
        System.out.println(bdTest3.movePointRight(2));

代码结果图示:
BigDecimal小数点向右移

scaleByPowerOfTen

参数要求:
public BigDecimal scaleByPowerOfTen​(int n)

方法作用:
为BigDecimal乘10的n次方
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.555");
        BigDecimal bdTest2 = new BigDecimal("-2.5");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.scaleByPowerOfTen(2));
        System.out.println(bdTest2.scaleByPowerOfTen(2));
        System.out.println(bdTest3.scaleByPowerOfTen(2));

代码结果图示:
scaleByPowerOfTen

stripTrailingZeros

参数要求:
public BigDecimal stripTrailingZeros()

方法作用:
将数后面没用的0去掉

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200.55500");
        BigDecimal bdTest2 = new BigDecimal("-2.500");
        BigDecimal bdTest3 = new BigDecimal("500.00");

        System.out.println(bdTest1.stripTrailingZeros());
        System.out.println(bdTest2.stripTrailingZeros());
        System.out.println(bdTest3.stripTrailingZeros());

代码结果图示:
stripTrailingZeros

compareTo

参数要求:
public int compareTo​(BigDecimal val)

方法作用:
比较大小 大于为1 等于为0 小于为-1
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("2");
        BigDecimal bdTest3 = new BigDecimal("500");

        System.out.println(bdTest1.compareTo(bdTest1));
        System.out.println(bdTest1.compareTo(bdTest2));
        System.out.println(bdTest1.compareTo(bdTest3));

代码结果图示:
compareTo

equals

参数要求:
public boolean equals​(Object x)

方法作用:
判断两个值是否相等,与compareTo不同
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("2");
        BigDecimal bdTest3 = new BigDecimal("2.00");

        System.out.println(bdTest1.equals(bdTest1));
        System.out.println(bdTest1.equals(bdTest2));
        System.out.println(bdTest1.equals(bdTest3));

代码结果图示:
equals BigDecimal

min

参数要求:
public BigDecimal min​(BigDecimal val)

方法作用:
返回两个值中更小的那一个
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("5");
        BigDecimal bdTest3 = new BigDecimal("2.00");

        System.out.println(bdTest1.min(bdTest1));
        System.out.println(bdTest1.min(bdTest2));
        System.out.println(bdTest1.min(bdTest3));

代码结果图示:
min BigDecimal

max

参数要求:
public BigDecimal max​(BigDecimal val)

方法作用:
返回两个数中更大的那一个

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("5");
        BigDecimal bdTest3 = new BigDecimal("2.00");

        System.out.println(bdTest1.max(bdTest1));
        System.out.println(bdTest1.max(bdTest2));
        System.out.println(bdTest1.max(bdTest3));

代码结果图示:
max BigDecimal

hashCode

参数要求:
public int hashCode()

方法作用:
返回BigDecimal的哈希码
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("5");
        BigDecimal bdTest3 = new BigDecimal("2.00");

        System.out.println(bdTest1.hashCode());
        System.out.println(bdTest2.hashCode());
        System.out.println(bdTest3.hashCode());

代码结果图示:
hashcode BigDecimal

toString

参数要求:
public String toString()

方法作用:
返回toString叙述的BigDecimal
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("5");
        BigDecimal bdTest3 = new BigDecimal("2.00");

        System.out.println(bdTest1.toString());
        System.out.println(bdTest2.toString());
        System.out.println(bdTest3.toString());

代码结果图示:
toString BigDecimal

toEngineeringString

参数要求:
public String toEngineeringString()

方法作用:
如果是科学计数法计数,则返回比精度多一位的计数。
代码示例:

        BigDecimal bdTest1 = new BigDecimal("2e7");
        BigDecimal bdTest2 = new BigDecimal("0.5e7");
        BigDecimal bdTest3 = new BigDecimal("2.0E5");

        System.out.println(bdTest1.toEngineeringString());
        System.out.println(bdTest2.toEngineeringString());
        System.out.println(bdTest3.toEngineeringString());

代码结果图示:
toEngineeringString

toPlainString

参数要求:
public String toPlainString()

方法作用:
返回String类型的BigDecimal数值
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("5e7");
        BigDecimal bdTest3 = new BigDecimal("-2.905");

        System.out.println(bdTest1.toPlainString());
        System.out.println(bdTest2.toPlainString());
        System.out.println(bdTest3.toPlainString());

代码结果图示:
toPlainString

toBigInteger longValue intValue floatValue doubleValue

参数要求:
public BigInteger toBigInteger()
public long longValue()
public int intValue()
public float floatValue()
public double doubleValue()

方法作用:
将BigDecimal转换成对应的数据类型

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");

        BigInteger bi = bdTest1.toBigInteger();
        long testL = bdTest1.longValue();
        int testInt = bdTest1.intValue();
        float testFloat = bdTest1.floatValue();
        double testDouble = bdTest1.doubleValue();

        System.out.println("bi = " + bi);
        System.out.println("testL = " + testL);
        System.out.println("testInt = " + testInt);
        System.out.println("testFloat = " + testFloat);
        System.out.println("testDouble = " + testDouble);

代码结果图示:
数据类型转换

toBigIntegerExact longValueExact intValueExact shortValueExact byteValueExact

参数要求:
public BigInteger toBigIntegerExact()
public long longValueExact()
public int intValueExact()
public short shortValueExact()
public byte byteValueExact()

方法作用:
跟上面的差不多 但是结果超出类型范围或者损失数据会报错
代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");

        BigInteger bi = bdTest1.toBigIntegerExact();
        long testL = bdTest1.longValueExact();
        int testInt = bdTest1.intValueExact();
        short testShort = bdTest1.shortValueExact ();
        byte testByte = bdTest1.byteValueExact();//250行

        System.out.println("bi = " + bi);
        System.out.println("testL = " + testL);
        System.out.println("testInt = " + testInt);
        System.out.println("testShort = " + testShort);
        System.out.println("testByte = " + testByte);

代码结果图示:
byteValueExact

代码:

        BigDecimal bdTest1 = new BigDecimal("200");

        BigInteger bi = bdTest1.toBigIntegerExact();
        long testL = bdTest1.longValueExact();
        int testInt = bdTest1.intValueExact();
        short testShort = bdTest1.shortValueExact ();
        //byte testByte = bdTest1.byteValueExact();//250行

        System.out.println("bi = " + bi);
        System.out.println("testL = " + testL);
        System.out.println("testInt = " + testInt);
        System.out.println("testShort = " + testShort);

图示:
在这里插入图片描述

ulp

参数要求:
public BigDecimal ulp()

方法作用:
返回对应精度的最小数字

代码示例:

        BigDecimal bdTest1 = new BigDecimal("200");
        BigDecimal bdTest2 = new BigDecimal("5e7");
        BigDecimal bdTest3 = new BigDecimal("-2.905");

        System.out.println(bdTest1.ulp());
        System.out.println(bdTest2.ulp());
        System.out.println(bdTest3.ulp());

代码结果图示:
BigDecimal ulp

最后

以上就是冷傲荔枝为你收集整理的Java BigDecimal的方法介绍的全部内容,希望文章能够帮你解决Java BigDecimal的方法介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部