/// <summary> /// 乘法(返回新对象) /// </summary> public BigFloatData mulN(double vv) { BigFloatData re = this.clone(); re.mul(vv); return(re); }
/// <summary> /// 乘法 /// </summary> public void mul(BigFloatData data) { this.value *= data.value; this.rank += data.rank; refresh(); }
/// <summary> /// 乘法(返回新对象) /// </summary> public BigFloatData mulN(BigFloatData data) { BigFloatData re = this.clone(); re.mul(data); return(re); }
/// <summary> /// 通过字符串创建 /// </summary> public static BigFloatData createByStr(String str) { BigFloatData re = new BigFloatData(); re.initByStr(str); return(re); }
/// <summary> /// 减法(返回新对象) /// </summary> public BigFloatData subN(double vv) { BigFloatData re = this.clone(); re.sub(vv); return(re); }
/// <summary> /// 加法(返回新对象) /// </summary> public BigFloatData addN(double vv) { BigFloatData re = this.clone(); re.add(vv); return(re); }
/// <summary> /// 除法(返回值新new对象) /// </summary> public BigFloatData divN(BigFloatData data) { BigFloatData re = this.clone(); re.div(data); return(re); }
/// <summary> /// 除法(返回值新new对象) /// </summary> public BigFloatData divN(double vv) { BigFloatData re = this.clone(); re.div(vv); return(re); }
/// <summary> /// 加法(返回新对象) /// </summary> public BigFloatData addN(BigFloatData data) { BigFloatData re = this.clone(); re.add(data); return(re); }
/// <summary> /// 通过混合long创建 /// </summary> public static BigFloatData createByMixLong(long value) { BigFloatData re = new BigFloatData(); re.initByMixLong(value); return(re); }
/// <summary> /// 通过int创建 /// </summary> public static BigFloatData createByDouble(double value) { BigFloatData re = new BigFloatData(); re.initByDouble(value); return(re); }
/// <summary> /// 除法 /// </summary> public void div(BigFloatData data) { this.value /= data.value; this.rank -= data.rank; refresh(); }
/// <summary> /// 减法(返回新对象) /// </summary> public BigFloatData subN(BigFloatData data) { BigFloatData re = this.clone(); re.sub(data); return(re); }
/// <summary> /// 克隆数据 /// </summary> public BigFloatData clone() { BigFloatData re = new BigFloatData(); re.rank = this.rank; re.value = this.value; re._numberStrDirty = true; return(re); }
/// <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; }
/// <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); }
/// <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(); }
/// <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)); } }
/// <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)); }