最新评论
lsp 2011-11-10 16:31
如果输入的数在32位范围内(-2147483648.00~2147483647.00)的话,可用下述函数:
[code=javascript]
function f(v, a, b) {
v = v - 101 >> 31;
return [a, b][v + 1];
}
[/code]
lsp 2011-11-10 13:43
@KangC
Math.ceil,Math.floor,Math.min和Math.max本身就用到了逻辑运算符。
KangC 2011-11-09 16:04
@梦想天空(山边小溪)
确实如此,把第一句改成 Math.min(Math.ceil(v), 101);就OK了
3Q,指教:)
梦想天空(山边小溪) 2011-11-09 15:14
@KangC
你把下面的300改成100.3试试,按题目意思大于100应该返回b,你的函数返回的是a
document.writeln(f(300, "a", "b")); //大于100,返回b
KangC 2011-11-09 14:32
@梦想天空(山边小溪)
v = Math.floor(v / 101);
小数点已经去掉了,运行下在说吧,兄弟
KangC 2011-11-09 14:26
@法兰天蝎
其实条件里是只能用算术运算符,不可以用逻辑运算符号。
Javascript里虽然1=true但这样用其实不转换的。
{"true":a,"false":b}[v < 101];如果可以用逻辑运算符的话。
zpz 2011-11-09 11:30
如果a,b是变量
function aFunction(input, a, b){
return arguments[1 +(input > 100)];
}
如果是字符
function aFunction(input){
return ['a', 'b'][+(input > 100)];
}
function aFunctionAlt(input){
return String.fromCharCode(97 + (input > 100));
}
simonleung 2011-11-09 10:36
return arguments[2-~~(100/Math.max(v,100))]
梦想天空(山边小溪) 2011-11-09 09:57
这个解答小数的情况就不对了,例如100.6返回1,有一种解法是这样的:
Math.min(Math.max(Math.floor(Math.ceil(a) / 101), 0), 1);
tandly 2011-11-09 09:10
<script type="text/javascript">
function f(v, a, b) {
return {
"true": a,
"false": b
}[v <= 100];
}
document.writeln(f(101, 1, 2));
</script>
golin 2011-11-09 08:53
function test(o,a,b){
return o>100?b:a;
}
xling 2011-11-09 08:40
原題是:
仅用数学方法Math.xxx及+-*/运算实现上述表达式的等同效果的b = f(a)
不能用if else && || ? : 数组等
<script>
var a = 100.0000000001;
var b = Math.ceil((a - 100) / (100 * (Math.abs(a) / 10 )))
alert(b)
a = 99.999999999;
b = Math.ceil((a - 100) / (100 * (Math.abs(a) / 10 )))
alert(b)
</script>
远非¢贤 2011-11-09 08:29
[quote]法兰天蝎:
T[] = {a,b};
return T[num>100];[/quote]
比较犀利
simonleung 2011-11-09 03:30
return arguments[Number(v>100)+1];
