private static char[] powersOfTen = new char[] {
public override string ToString()
int integerDigitsCount = (int)Math.Floor(Math.Log10(Math.Truncate(value))) + 1;
int decimalDigitsCount = 4 - integerDigitsCount;
format += '.' + new String('0', decimalDigitsCount) + powersOfTen[power];
return value.ToString(format);
private BigNumber Format()
public BigNumber(double value, int power)
public BigNumber(double value)
public static BigNumber operator +(BigNumber number1, BigNumber number2)
int powerDifference = number1.power - number2.power;
int tenPowerDifference = (int)Math.Pow(10, Math.Abs(powerDifference));
_value = number1.value / tenPowerDifference + number2.value;
else if (powerDifference > 0)
_value = number2.value / tenPowerDifference + number1.value;
_value = number2.value + number1.value;
result = new BigNumber(_value, _power);
public static BigNumber operator +(BigNumber number1, int number2)
return number1 + new BigNumber(number2);