static void Main(string[] args) { VeryLongDouble a = new VeryLongDouble(); a.FloatPart = new char[] { '0' }; a.IntegralPart = new char[] { '1' }; DividedByTwoXTimes(ref a, 200); Console.WriteLine(a); }
public VeryLongDouble(VeryLongDouble a) { IntegralPart = new char[a.IntegralPart.Length]; FloatPart = new char[a.FloatPart.Length]; for (int i = 0; i < a.IntegralPart.Length; i++) { IntegralPart[i] = a.IntegralPart[i]; } for (int i = 0; i < a.FloatPart.Length; i++) { FloatPart[i] = a.FloatPart[i]; } }
static void DividedByTwoXTimes(ref VeryLongDouble a, int X) { VeryLongDouble buf = new VeryLongDouble(); for (int i = 0; i < X; i++) { buf = new VeryLongDouble(a.IntegralPart.Length, a.FloatPart.Length); #region IntegralPartDivision for (int j = a.IntegralPart.Length - 1; j >= 0; j--) { if (a.IntegralPart[j] == '0') { continue; } if (a.IntegralPart[j] == '1') { if (j != 0) { buf.IntegralPart[j - 1] = '5'; } else { buf.FloatPart[0] = '5'; } } if (a.IntegralPart[j] == '2') { buf.IntegralPart[j] += char.ConvertFromUtf32(1)[0]; } if (a.IntegralPart[j] == '3') { buf.IntegralPart[j] += char.ConvertFromUtf32(1)[0]; if (j != 0) { buf.IntegralPart[j - 1] = '5'; } else { buf.FloatPart[0] = '5'; } } if (a.IntegralPart[j] == '4') { buf.IntegralPart[j] += char.ConvertFromUtf32(2)[0]; } ; if (a.IntegralPart[j] == '5') { buf.IntegralPart[j] += char.ConvertFromUtf32(2)[0]; if (j != 0) { buf.IntegralPart[j - 1] = '5'; } else { buf.FloatPart[0] = '5'; } } if (a.IntegralPart[j] == '6') { buf.IntegralPart[j] += char.ConvertFromUtf32(3)[0]; } if (a.IntegralPart[j] == '7') { buf.IntegralPart[j] += char.ConvertFromUtf32(3)[0]; if (j != 0) { buf.IntegralPart[j - 1] = '5'; } else { buf.FloatPart[0] = '5'; } } if (a.IntegralPart[j] == '8') { buf.IntegralPart[j] += char.ConvertFromUtf32(4)[0]; } if (a.IntegralPart[j] == '9') { buf.IntegralPart[j] += char.ConvertFromUtf32(4)[0]; if (j != 0) { buf.IntegralPart[j - 1] = '5'; } else { buf.FloatPart[0] = '5'; } } } #endregion #region FloatPartDivision for (int j = 0; j < a.FloatPart.Length; j++) { if (a.FloatPart[j] == '0') { continue; } if (a.FloatPart[j] == '1') { buf.FloatPart[j + 1] = '5'; } if (a.FloatPart[j] == '2') { buf.FloatPart[j] += char.ConvertFromUtf32(1)[0]; } if (a.FloatPart[j] == '3') { buf.FloatPart[j] += char.ConvertFromUtf32(1)[0]; buf.FloatPart[j + 1] = '5'; } if (a.FloatPart[j] == '4') { buf.FloatPart[j] += char.ConvertFromUtf32(2)[0]; } ; if (a.FloatPart[j] == '5') { buf.FloatPart[j] += char.ConvertFromUtf32(2)[0]; buf.FloatPart[j + 1] = '5'; } if (a.FloatPart[j] == '6') { buf.FloatPart[j] += char.ConvertFromUtf32(3)[0]; } if (a.FloatPart[j] == '7') { buf.FloatPart[j] += char.ConvertFromUtf32(3)[0]; buf.FloatPart[j + 1] = '5'; } if (a.FloatPart[j] == '8') { buf.FloatPart[j] += char.ConvertFromUtf32(4)[0]; } if (a.FloatPart[j] == '9') { buf.FloatPart[j] += char.ConvertFromUtf32(4)[0]; buf.FloatPart[j + 1] = '5'; } } #endregion a = buf; a.CutZeroes(); } a.CutZeroes(); }