确定更大的数字并划分

时间:2011-12-02 13:46:39

标签: javascript math

好的,我不知道该怎么说。

这是我的代码:

var ratio, input={w:100,h:50};
if(input.w <= input.h) ratio = input.h / input.w;
else                   ratio = input.w / input.h;

问题: 是否有更快,更好,“需要更少代码”的方式来计算ratio?比if / else语句。

谢谢!

5 个答案:

答案 0 :(得分:10)

您可以使用三元条件运算符。语法:

condition ? (statement if true) : (statement if false);

在你的情况下:

ratio = (input.w <= input.h) ? (input.h/input.w) : (input.w/input.h);

编辑:

这并不比你的解决方案快,写入速度更快。我建议不要使用:

var ratio = Math.Max(input.w, input.h) / Math.Min(input.w, input.h)

这将比较数字两次(一次在Math.Max中,一次在Math.Min中)并且会慢一些。

答案 1 :(得分:7)

var ratio = Math.max(input.w, input.h) / Math.min(input.w, input.h)

另一个[可能更有效]:

var ratio = Math.max(input.w / input.h, 1 / input.w / input.h);

比三元更有效:

var ratio = w / h ;
ratio = ratio > 1 && ratio || 1/ratio

答案 2 :(得分:2)

小一点不一定更快:

var ratio, input = {w:100, h:50};
ratio = input.w <= input.h ? input.h / input.w : input.w / input.h;

答案 3 :(得分:2)

怎么样

ratio = Math.max(input.w, input.h) / Math.min(input.w, input.h)

答案 4 :(得分:1)

您可以使用三元运算符:

var ratio = (input.w <= input.h ? (input.h / input.w) : (input.w / input.h));