public void NumericOperation(Func <BigInteger, BigInteger, object> intInt, Func <double, double, object> doubleDouble) { var item2 = ScliptingUtil.ToNumeric(Pop()); var item1 = ScliptingUtil.ToNumeric(Pop()); if (item1 is double) { if (item2 is double) { CurrentStack.Add(doubleDouble((double)item1, (double)item2)); } else { CurrentStack.Add(doubleDouble((double)item1, (double)(BigInteger)item2)); } } else { if (item2 is double) { CurrentStack.Add(doubleDouble((double)(BigInteger)item1, (double)item2)); } else { CurrentStack.Add(intInt((BigInteger)item1, (BigInteger)item2)); } } }
public void NumericOperation(Func <BigInteger, object> fromInt, Func <double, object> fromDouble) { var item = ScliptingUtil.ToNumeric(Pop()); if (item is double) { CurrentStack.Add(fromDouble((double)item)); } else { CurrentStack.Add(fromInt((BigInteger)item)); } }