public override TANumber Square() { errorLength = 15; TPNumber result = new TPNumber(value, Convert.ToString(radix), Convert.ToString(errorLength)); result.value = Convert.ToString(ConverterFrom10.Convert(Math.Round(Math.Pow(ConverterTo10.Convert(value, radix), 0.5), errorLength), radix, errorLength)); return(result); }
public override TANumber Divide(TANumber otherNumber) { TPNumber result = new TPNumber(); result.errorLength = otherNumber.ErrorLengthNumber + errorLength; result.value = Convert.ToString(ConverterFrom10.Convert(ConverterTo10.Convert(ValueString, radix) / ConverterTo10.Convert(otherNumber.ValueString, otherNumber.RadixNumber), otherNumber.RadixNumber, result.errorLength)); result.radix = otherNumber.RadixNumber; return(result); }
public TPNumber(double value, int radix, int errorLength) { if (radix < MIN_RADIX || radix > MAX_RADIX) { return; } this.radix = radix; this.value = radix == DEFAULT_RADIX?value.ToString() : ConverterFrom10.Convert(value, radix, errorLength); this.errorLength = errorLength; }
public override TANumber Add(TANumber otherNumber) { TPNumber result = new TPNumber(); result.errorLength = otherNumber.ErrorLengthNumber + errorLength; double sum = ConverterTo10.Convert(otherNumber.ValueString, otherNumber.RadixNumber) + ConverterTo10.Convert(ValueString, radix); result.value = Convert.ToString(ConverterFrom10.Convert(sum, otherNumber.RadixNumber, result.errorLength)); result.radix = otherNumber.RadixNumber; result.errorLength = Math.Max(otherNumber.ErrorLengthNumber, errorLength); return(result); }
//Изменяет значение основания с.сч. исходного числа. private void sourceRadix_ValueChanged(object sender, EventArgs e) { //Обновить состояние. sourceNumber.Text = ConverterFrom10.Convert(ConverterTo10.Convert(sourceNumber.Text, prevRadix), Convert.ToInt32(sourceRadix.Value), 100); prevRadix = Convert.ToInt32(sourceRadix.Value); control.Editor.Number = sourceNumber.Text; control.Radix = (int)sourceRadix.Value; if (control.Editor.state == AEditor.State.Choose || control.Editor.state == AEditor.State.EditRight || control.Editor.state == AEditor.State.Print) { control.processor.RightOperand = new TPNumber(sourceNumber.Text, control.Radix.ToString(), control.processor.RightOperand.ErrorLengthString); } else { if (control.processor.LeftOperand != null) { control.processor.LeftOperand = new TPNumber(sourceNumber.Text, control.Radix.ToString(), control.processor.LeftOperand.ErrorLengthString); } } //Обновить состояние командных кнопок. this.UpdateP1(); }
public override string AddDigit(int number, int radix) { this.number += ConverterFrom10.Convert(number, radix); return(this.number); }