将Excel公式转换为结构化英语

时间:2014-11-17 15:49:57

标签: excel pseudocode

我有这个公式,包含变量mse

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;

2 个答案:

答案 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