我有这个公式,包含变量m
,s
和e
。
IFERROR(IF(m - IF(s*(1/ABS(e))>m;m;s*(1/ABS(e)))>m;m;m-IF(s*(1/ABS(e))>m;m;s*(1/ABS(e))))/100;0)
我想把它翻译成结构化英语,这就是我所拥有的,但我怀疑它是正确的:
IF e != 0
IF m > m
return m
ELSE IF s / |e| > m
return m
ELSE IF s / e > m
return m - s / e
ELSE
return s / e
ELSE
return 0
?? forgot this one upss.. s / e / 100;
答案 0 :(得分:1)
在分析了这个功能之后,我觉得这个简化版有相同的结果:
=IFERROR(IF(MIN(m;s/ABS(e))<0;m;m-MIN(m;s/ABS(e)))/100;0)
其逻辑可以这样解释:
if e = 0
0
else if m - (min between s/|e| and m) > m
m
else
m - (min between s/|e| and m)
即便如此,我也不明白这是为了什么。 :P
编辑:我添加了Sir Ben代码的简化Javascript版本:
function whacko (m,s,e) {
if (e === 0)
return 0;
var value = m - Math.min(s / Math.abs(e), m);
if (value > m)
return m;
return value;
};
答案 1 :(得分:0)
感谢Andrew的精彩回复,这是JS中的工作代码:
var m = 33
, s = 43
, e = 12.75; // Excel: 29,6%
function whacko (m,s,e) {
if (e === 0) {
return 0;
} else if (m - (Math.min(s/Math.abs(e), m)) > m) {
return m;
} else {
return m - (Math.min(s/Math.abs(e), m));
}
};
console.log(whacko(m,s,e)); // 29.627450980392158