Example #1
0
    /// <summary>
    /// 乘法(返回新对象)
    /// </summary>
    public BigFloatData mulN(double vv)
    {
        BigFloatData re = this.clone();

        re.mul(vv);
        return(re);
    }
Example #2
0
    /// <summary>
    /// 乘法
    /// </summary>
    public void mul(BigFloatData data)
    {
        this.value *= data.value;
        this.rank  += data.rank;

        refresh();
    }
Example #3
0
    /// <summary>
    /// 乘法(返回新对象)
    /// </summary>
    public BigFloatData mulN(BigFloatData data)
    {
        BigFloatData re = this.clone();

        re.mul(data);
        return(re);
    }
Example #4
0
    /// <summary>
    /// 通过字符串创建
    /// </summary>
    public static BigFloatData createByStr(String str)
    {
        BigFloatData re = new BigFloatData();

        re.initByStr(str);
        return(re);
    }
Example #5
0
    /// <summary>
    /// 减法(返回新对象)
    /// </summary>
    public BigFloatData subN(double vv)
    {
        BigFloatData re = this.clone();

        re.sub(vv);
        return(re);
    }
Example #6
0
    /// <summary>
    /// 加法(返回新对象)
    /// </summary>
    public BigFloatData addN(double vv)
    {
        BigFloatData re = this.clone();

        re.add(vv);
        return(re);
    }
Example #7
0
    /// <summary>
    /// 除法(返回值新new对象)
    /// </summary>
    public BigFloatData divN(BigFloatData data)
    {
        BigFloatData re = this.clone();

        re.div(data);
        return(re);
    }
Example #8
0
    /// <summary>
    /// 除法(返回值新new对象)
    /// </summary>
    public BigFloatData divN(double vv)
    {
        BigFloatData re = this.clone();

        re.div(vv);
        return(re);
    }
Example #9
0
    /// <summary>
    /// 加法(返回新对象)
    /// </summary>
    public BigFloatData addN(BigFloatData data)
    {
        BigFloatData re = this.clone();

        re.add(data);
        return(re);
    }
Example #10
0
    /// <summary>
    /// 通过混合long创建
    /// </summary>
    public static BigFloatData createByMixLong(long value)
    {
        BigFloatData re = new BigFloatData();

        re.initByMixLong(value);
        return(re);
    }
Example #11
0
    /// <summary>
    /// 通过int创建
    /// </summary>
    public static BigFloatData createByDouble(double value)
    {
        BigFloatData re = new BigFloatData();

        re.initByDouble(value);
        return(re);
    }
Example #12
0
    /// <summary>
    /// 除法
    /// </summary>
    public void div(BigFloatData data)
    {
        this.value /= data.value;
        this.rank  -= data.rank;

        refresh();
    }
Example #13
0
    /// <summary>
    /// 减法(返回新对象)
    /// </summary>
    public BigFloatData subN(BigFloatData data)
    {
        BigFloatData re = this.clone();

        re.sub(data);
        return(re);
    }
Example #14
0
    /// <summary>
    /// 克隆数据
    /// </summary>
    public BigFloatData clone()
    {
        BigFloatData re = new BigFloatData();

        re.rank            = this.rank;
        re.value           = this.value;
        re._numberStrDirty = true;
        return(re);
    }
Example #15
0
    /// <summary>
    /// 复制(潜拷贝)
    /// </summary>
    protected override void toShadowCopy(BaseData data)
    {
        if (!(data is BigFloatData))
        {
            return;
        }

        BigFloatData mData = (BigFloatData)data;

        this.rank  = mData.rank;
        this.value = mData.value;
    }
Example #16
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        BigFloatData mData = (BigFloatData)data;

        if (this.rank != mData.rank)
        {
            return(false);
        }

        if (this.value != mData.value)
        {
            return(false);
        }

        return(true);
    }
Example #17
0
    /// <summary>
    /// 减法
    /// </summary>
    public void sub(BigFloatData data)
    {
        if (this.rank == data.rank)
        {
            this.value -= data.value;
        }
        else
        {
            int dRank = this.rank - data.rank;

            //超出限制
            if (Math.Abs(dRank) >= Global.bigFloatRankMaxD)
            {
                return;
            }

            this.value -= changeRank(data.value, dRank);
        }

        refresh();
    }
Example #18
0
    /// <summary>
    /// 比大小(b1<b2返回-1),b1==b2返回0,b1>b2返回1
    /// </summary>
    public static int compare(BigFloatData b1, double value)
    {
        int i1 = MathUtils.doubleCompare(b1.value, 0);
        int i2 = MathUtils.doubleCompare(value, 0);

        if (i1 != i2)
        {
            return(MathUtils.intCompare(i1, i2));
        }

        if (i1 == 0)
        {
            return(0);
        }

        if (Math.Abs(value) < Global.bigFloatWeiValue)
        {
            int rankRe = MathUtils.intCompare(b1.rank, 0);

            if (rankRe != 0)
            {
                return(i1 > 0 ? rankRe : -rankRe);
            }

            return(MathUtils.doubleCompare(b1.value, value));
        }
        else
        {
            BigFloatData tempData = b1._tempData;

            if (tempData == null)
            {
                tempData = b1._tempData = new BigFloatData();
            }

            tempData.initByDouble(value);
            return(compare(b1, tempData));
        }
    }
Example #19
0
    /// <summary>
    /// 比大小(b1<b2返回-1),b1==b2返回0,b1>b2返回1
    /// </summary>
    public static int compare(BigFloatData b1, BigFloatData b2)
    {
        int i1 = MathUtils.doubleCompare(b1.value, 0);
        int i2 = MathUtils.doubleCompare(b2.value, 0);

        if (i1 != i2)
        {
            return(MathUtils.intCompare(i1, i2));
        }

        if (i1 == 0)
        {
            return(0);
        }

        int rankRe = MathUtils.intCompare(b1.rank, b2.rank);

        if (rankRe != 0)
        {
            return(i1 > 0 ? rankRe : -rankRe);
        }

        return(MathUtils.doubleCompare(b1.value, b2.value));
    }