public static BFloat Pow(BFloat x, double y) { BFloat ret = x; ret._scale = x._scale * y; ret._num = Math.Pow(x._num, y); ret.CutNumber(); return(ret); }
public static BFloat operator *(BFloat left, BFloat right) { BFloat ret = left; ret._num = left._num * right._num; ret._scale = left._scale + right._scale; ret.CutNumber(); return(ret); }
public static BFloat operator /(BFloat left, BFloat right) { BFloat ret = left; if (left._scale < right._scale) { left.ChangeScale(right._scale); } ret._num = left._num / right._num; ret._scale = left._scale - right._scale; ret.CutNumber(); return(ret); }
static void Main(string[] args) { //bfloat b1 = 152300; //bfloat b2 = new BFloat(1.2411, 26+15); //bfloat b3 = 23523423423423234234568.0; //Console.WriteLine( // $"{b1.ToString(BFloatStringFormat.UseLetters)}\n{b2.ToString(BFloatStringFormat.UseLetters)}\n{b3.ToString(BFloatStringFormat.UseLetters)}"); bfloat b = 1.523; for (int i = 0; i < 1000; i++) { b *= 10; //Console.WriteLine(b.ToString(BFloatStringFormat.UseLetters)); Console.WriteLine(b.ToString(BFloatStringFormat.ChineseAndLetters)); } Console.ReadKey(); }
public static BFloat operator -(BFloat left, BFloat right) { BFloat ret = left; //修正位数 if (left._scale > right._scale) { right.ChangeScale(left._scale); } else if (left._scale < right._scale) { left.ChangeScale(right._scale); } ret._scale = left._scale; ret._num = left._num - right._num; ret.CutNumber(); return(ret); }
public override bool Equals(object obj) { BFloat o = (BFloat)obj; return(_num == o._scale && _scale == o._scale); }