Javascript 计算总和,除非它小于零

Javascript calculate sum unless it is less than zero

一个简单的问题,这个总和可以写成一行吗:

  a = (b / c) * 100;
  if (a < 0) a = 0;

除了同样长的明显方式:

 if ((b / c) * 100) > 0) a = (b / c) * 100; else a = 0;

编辑:这个的三元版本没有什么不同,我认为我不需要提及。

也许没有一种简短、简洁和聪明的方式来写这个,但我只是希望有,因为在下面添加额外的行似乎总是不必要的。

您可以使用三元运算符:

a = ((b / c) * 100) >= 0 ? ((b / c) * 100) : 0;

您可以使用三元表达式:

a = (b / c) * 100 > 0 ? (b / c) * 100 : 0;

这会将 a 分配给数量 (b / c) * 100,除非该数量小于或等于零,在这种情况下,它只会将零分配给 a

你可以带 Math.max 和零。

a = Math.max(b * 100 / c, 0);
// I do not think that *100 is necessary in your test
a = (b / c) < 0 ? 0 : (b / c) * 100;

这是我唯一能想到的方法

a = (b / c * 100) >= 0 ? (b / c * 100) : 0;

实际上,如果 b 或 c 之一为负(但不是两者),则结果为负。所以有点长,但实际上只有必要的计算和更多的比较:

b < 0 ? c > 0 ? a = 0 : a = b * 100  / c : c < 0 ? a = b * 100 : a = 0;