求解一道题目

2012-02-23 00:35:23 +08:00
 Aben
今天一个小同学分享了,想了3个小时,没有解出来。
原题目是
------------------------------------
if(a>100){b=1}else{b=0}
只用加减乘除和Math对象。实现同样的效果
------------------------------------
我目前的进度:

b = Math.ceil( Math.min( Math.abs( Math.min( 100 - a, 0 ) ), 1) )

这样能判断所有的数字,+-Infinity 也是可以的,但是 NaN 和 字母等结果为 NaN .
如果允许使用 isNaN,那么可以完全实现(求验证)。

b = 1 - isNaN ( b / b );

Tips:
NaN --> Not a Number,但是他又是 Number 类型。参与任何运算的结果都为 NaN.
有一条例外定律就是,任何数的0次方都为1。Math.pow(NaN,0)==1;

我目前的结论是:此题无解...
4021 次点击
所在节点    问与答
9 条回复
013231
2012-02-23 01:15:14 +08:00
013231
2012-02-23 01:30:06 +08:00
哦, 我忘记nan了.
raptium
2012-02-23 01:35:35 +08:00
NaN > 100 应该得到啥?
013231
2012-02-23 01:55:19 +08:00
@raptium false
icyflash
2012-02-23 02:11:57 +08:00
C#飘过,NaN不管啥操作都返回NaN...
Aben
2012-02-23 10:16:07 +08:00
@013231 a = -Infinity , b = -1.
iceseaboy
2012-02-23 11:27:48 +08:00
此题明显属于命题不完整, 你还真的就一直钻进去了

那如果a = {} ,你又如何呢
a > {} == false
a < {} == false
iceseaboy
2012-02-23 11:28:29 +08:00
V2EX为什么就不能修改回复呢...害得我写错了改不了
100 > {} == false
100 < {} == false
013231
2012-02-23 12:43:16 +08:00
@Aben 修复这个bug倒是简单:
http://gist.github.com/1890240
NaN依旧无解.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/27938

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX