static private ConvertToScriptString ( double value ) : string | ||
value | double | |
return | string |
internal static string AddOperator(ScriptProcessor processor, SObject left, SObject right) { if (left is SString || right is SString) { string strLeft, strRight; if (left is SString) { strLeft = ((SString)left).Value; } else { strLeft = left.ToString(processor).Value; } if (right is SString) { strRight = ((SString)right).Value; } else { strRight = right.ToString(processor).Value; } return("\"" + strLeft + strRight + "\""); } else { var numbers = GetNumericOperatorParameters(processor, left, right); return(SNumber.ConvertToScriptString(numbers.Item1 + numbers.Item2)); } }
internal static string ModulusOperator(ScriptProcessor processor, SObject left, SObject right) { var numbers = GetNumericOperatorParameters(processor, left, right); if (numbers.Item2 == 0D) // Because, when we divide by 0, we get Infinity, but when we do (x % 0), we get NaN. Great. { return(SObject.LITERAL_NAN); } return(SNumber.ConvertToScriptString(numbers.Item1 % numbers.Item2)); }
internal static string DivideOperator(ScriptProcessor processor, SObject left, SObject right) { var numbers = GetNumericOperatorParameters(processor, left, right); if (numbers.Item2 == 0D) // Catch division by 0 by returning infinity (wtf -> what a terrible feature). { return(SObject.LITERAL_INFINITY); } return(SNumber.ConvertToScriptString(numbers.Item1 / numbers.Item2)); }
internal static string SubtractOperator(ScriptProcessor processor, SObject left, SObject right) { var numbers = GetNumericOperatorParameters(processor, left, right); return(SNumber.ConvertToScriptString(numbers.Item1 - numbers.Item2)); }
internal static string ExponentOperator(ScriptProcessor processor, SObject left, SObject right) { var numbers = GetNumericOperatorParameters(processor, left, right); return(SNumber.ConvertToScriptString(Math.Pow(numbers.Item1, numbers.Item2))); }