⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numberhelper.java

📁 java 的源代码
💻 JAVA
字号:
package com.reddragon2046.base.utilities.data.functions;

import java.math.BigDecimal;
import java.math.BigInteger;

final class NumberHelper
{

    private NumberHelper()
    {
    }

    static BigDecimal asBigDecimal(Number n)
    {
        return (n instanceof BigDecimal) ? (BigDecimal)n : new BigDecimal(n.toString());
    }

    static BigInteger asBigInteger(Number n)
    {
        return (n instanceof BigInteger) ? (BigInteger)n : asBigDecimal(n).toBigInteger();
    }

    static Number plus(Number n1, Number n2, Class mode)
    {
        if(mode.equals(java.lang.Integer.class))
            return new Integer(n1.intValue() + n2.intValue());
        if(mode.equals(java.lang.Long.class))
            return new Long(n1.longValue() + n2.longValue());
        if(mode.equals(java.lang.Float.class))
            return new Float(n1.floatValue() + n2.floatValue());
        if(mode.equals(java.lang.Double.class))
            return new Double(n1.doubleValue() + n2.doubleValue());
        if(mode.equals(java.lang.Byte.class))
            return new Byte((byte)(n1.byteValue() + n2.byteValue()));
        if(mode.equals(java.lang.Short.class))
            return new Short((short)(n1.shortValue() + n2.shortValue()));
        if(mode.equals(java.math.BigInteger.class))
            return asBigInteger(n1).add(asBigInteger(n2));
        if(mode.equals(java.math.BigDecimal.class))
            return asBigDecimal(n1).add(asBigDecimal(n2));
        else
            throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + mode.getClass());
    }

    static Number minus(Number n1, Number n2, Class mode)
    {
        if(mode.equals(java.lang.Integer.class))
            return new Integer(n1.intValue() - n2.intValue());
        if(mode.equals(java.lang.Long.class))
            return new Long(n1.longValue() - n2.longValue());
        if(mode.equals(java.lang.Float.class))
            return new Float(n1.floatValue() - n2.floatValue());
        if(mode.equals(java.lang.Double.class))
            return new Double(n1.doubleValue() - n2.doubleValue());
        if(mode.equals(java.lang.Byte.class))
            return new Byte((byte)(n1.byteValue() - n2.byteValue()));
        if(mode.equals(java.lang.Short.class))
            return new Short((short)(n1.shortValue() - n2.shortValue()));
        if(mode.equals(java.math.BigInteger.class))
            return asBigInteger(n1).subtract(asBigInteger(n2));
        if(mode.equals(java.math.BigDecimal.class))
            return asBigDecimal(n1).subtract(asBigDecimal(n2));
        else
            throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + mode.getClass());
    }

    static Number multiply(Number n1, Number n2, Class mode)
    {
        if(mode.equals(java.lang.Integer.class))
            return new Integer(n1.intValue() * n2.intValue());
        if(mode.equals(java.lang.Long.class))
            return new Long(n1.longValue() * n2.longValue());
        if(mode.equals(java.lang.Float.class))
            return new Float(n1.floatValue() * n2.floatValue());
        if(mode.equals(java.lang.Double.class))
            return new Double(n1.doubleValue() * n2.doubleValue());
        if(mode.equals(java.lang.Byte.class))
            return new Byte((byte)(n1.byteValue() * n2.byteValue()));
        if(mode.equals(java.lang.Short.class))
            return new Short((short)(n1.shortValue() * n2.shortValue()));
        if(mode.equals(java.math.BigInteger.class))
            return asBigInteger(n1).multiply(asBigInteger(n2));
        if(mode.equals(java.math.BigDecimal.class))
            return asBigDecimal(n1).multiply(asBigDecimal(n2));
        else
            throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + mode.getClass());
    }

    static Number divides(Number n1, Number n2, Class mode, int round_mode)
    {
        if(mode.equals(java.lang.Integer.class))
            return new Integer(n1.intValue() / n2.intValue());
        if(mode.equals(java.lang.Long.class))
            return new Long(n1.longValue() / n2.longValue());
        if(mode.equals(java.lang.Float.class))
            return new Float(n1.floatValue() / n2.floatValue());
        if(mode.equals(java.lang.Double.class))
            return new Double(n1.doubleValue() / n2.doubleValue());
        if(mode.equals(java.lang.Byte.class))
            return new Byte((byte)(n1.byteValue() / n2.byteValue()));
        if(mode.equals(java.lang.Short.class))
            return new Short((short)(n1.shortValue() / n2.shortValue()));
        if(mode.equals(java.math.BigInteger.class))
            return asBigInteger(n1).divide(asBigInteger(n2));
        if(mode.equals(java.math.BigDecimal.class))
            return asBigDecimal(n1).divide(asBigDecimal(n2), round_mode);
        else
            throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + mode.getClass());
    }

    static Number modulus(Number n1, Number n2, Class mode, int round_mode)
    {
        if(mode.equals(java.lang.Integer.class))
            return new Integer(n1.intValue() % n2.intValue());
        if(mode.equals(java.lang.Long.class))
            return new Long(n1.longValue() % n2.longValue());
        if(mode.equals(java.lang.Float.class))
            return new Float(n1.floatValue() % n2.floatValue());
        if(mode.equals(java.lang.Double.class))
            return new Double(n1.doubleValue() % n2.doubleValue());
        if(mode.equals(java.lang.Byte.class))
            return new Byte((byte)(n1.byteValue() % n2.byteValue()));
        if(mode.equals(java.lang.Short.class))
            return new Short((short)(n1.shortValue() % n2.shortValue()));
        if(mode.equals(java.math.BigInteger.class))
            return asBigInteger(n1).mod(asBigInteger(n2));
        if(mode.equals(java.math.BigDecimal.class))
        {
            BigDecimal b1 = asBigDecimal(n1);
            BigDecimal b2 = asBigDecimal(n2);
            BigDecimal d = b1.divide(b2, round_mode);
            return b1.subtract(d.multiply(b2));
        } else
        {
            throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + mode.getClass());
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -