如何解析下面的字符串:
"(x > y) * z"
// Should always return:
// 1. float(0) if x < y
// 2. float(z) if x > y
我试图像这样使用 EvalMath :
$m = new EvalMath;
$m->evaluate("(4 > 1) * 5");
// Throws an error: "illegal character '>'"
我不介意使用其他类,或重写公式。只要我z
大于x
和y
以及0
,只要公式保持字符串,我就可以返回{{1}}。
答案 0 :(得分:2)
问题归结为根据EvalMath已经支持的功能重新表达不等运算符。由于this version具有max
和min
功能,我们可以重新表达:
(x > y)
min(1, max(0, (x - y)))
(x < y)
min(1, max(0, (y - x)))
请注意,这也包括完全相等,即x = y的情况。