text: public override ValueEval Evaluate(int srcRowIndex, int srcColumnIndex, ValueEval numberVE, ValueEval placesVE){ValueEval veText1;try{veText1 = OperandResolver.GetSingleValue(numberVE, srcRowIndex, srcColumnIndex);}catch (EvaluationException e){return e.GetErrorEval();}String strText1 = OperandResolver.CoerceValueToString(veText1);Double number = OperandResolver.ParseDouble(strText1);if (double.IsNaN(number)){return ErrorEval.VALUE_INVALID;}if (number< MinValue || number > MaxValue){return ErrorEval.NUM_ERROR;}int placesNumber;if (number < 0 || placesVE == null){placesNumber = DEFAULT_PLACES_VALUE;}else{ValueEval placesValueEval;try{placesValueEval = OperandResolver.GetSingleValue(placesVE, srcRowIndex, srcColumnIndex);}catch (EvaluationException e){return e.GetErrorEval();}String placesStr = OperandResolver.CoerceValueToString(placesValueEval);Double placesNumberDouble = OperandResolver.ParseDouble(placesStr);if (double.IsNaN( placesNumberDouble)){return ErrorEval.VALUE_INVALID;}placesNumber = (int)Math.Floor(placesNumberDouble);if (placesNumber < 0 || placesNumber == 0){return ErrorEval.NUM_ERROR;}}String binary = Convert.ToString((int)Math.Floor(number), 2);if (binary.Length > DEFAULT_PLACES_VALUE){binary = binary.Substring(binary.Length - DEFAULT_PLACES_VALUE);}if (binary.Length > placesNumber){return ErrorEval.NUM_ERROR;}return new StringEval(binary);}