A string-like range containing a mathematical expression.
Result of the expression. The result will also evaluate to true if it contains a valid number, or false if the expression does not evaluate to a number.
Evaluate expression can be used to perform mathematical expressions at runtime.
assert(evaluateExpression!int("0") == 0); assert(evaluateExpression!int("10") == 10); assert(evaluateExpression!int("123") == 123); assert(evaluateExpression!int("-0") == -0); assert(evaluateExpression!int("-10") == -10); assert(evaluateExpression!int("-123") == -123); assert(evaluateExpression!int("2+2") == 4); assert(evaluateExpression!int("2+2-3") == 1); assert(evaluateExpression!int("1+1*10+3") == 14); assert(evaluateExpression!int("1+2*10+3") == 24); assert(evaluateExpression!int("10+-10") == 0); assert(evaluateExpression!int("4*8") == 32); assert(evaluateExpression!int("20/5") == 4); assert(evaluateExpression!int("3/4") == 0); assert(evaluateExpression!float("3/4") == 0.75); assert(evaluateExpression!int("(4+5)*2") == 18); assert(evaluateExpression!int("(4+5)+2*2") == 9+4); assert(evaluateExpression!int("(4+4*5)*10+7") == (4+4*5)*10+7); assert(evaluateExpression!int("102+(4+4*5)*10+7") == 102+(4+4*5)*10+7);
Evaluate expression can perform floating point operations.
import std.math; import std.conv; assert(evaluateExpression!float("2.0+2.0").isClose(4.0)); assert(evaluateExpression!float("2.4*4.2").to!string == "10.08"); assert(evaluateExpression!float("3/4").isClose(0.75)); assert(evaluateExpression!float("2 * 0.75").isClose(1.5)); assert(evaluateExpression!float("-2 * 0.75 * 100").isClose(-150)); assert(evaluateExpression!float("2e8").isClose(2e8)); assert(evaluateExpression!float("-2e8").isClose(-2e8)); assert(evaluateExpression!float("2e+8").isClose(2e+8)); assert(evaluateExpression!float("2e-8").to!string == "2e-08"); assert(evaluateExpression!float("-2e+8").isClose(-2e+8));
Evaluate a string containing a mathematical expression and return the result.
Supported operations are +, -, * and /